次の正規表現を文字列に適用したい。Grant Skinners Regexr で正常に動作し、http://www.regexplanet.com/advanced/java/index.html (大文字と小文字を区別するセット) でも正常に動作しますが、Java はそれを飲み込みません。while ループにヒットすることはありません。これが私のコードです:
public static void main(String args[]) {
final String testString =
"lorem upsadsad asda 12esadas test@test.com asdlawaljkads test[at]test" +
"[dot]com test jasdsa meter";
final Pattern ptr =
Pattern.compile(
"^[A-Z0-9\\._%+-]+(@|\\s*\\[\\s*at\\s*\\]\\s*)[A-Z0-9\\.-]+" +
"(\\.|\\s*\\[\\s*dot\\s*\\]\\s*)[a-z]{2,6}$",
Pattern.CASE_INSENSITIVE);
try {
final Matcher mat = ptr.matcher(testString);
while (mat.find()) {
final String group1 = mat.group(1);
System.out.println(group1);
final String group2 = mat.group(2);
System.out.println(group2);
final String group3 = mat.group(3);
System.out.println(group3);
}
} catch (final Exception e) {
e.printStackTrace();
}
}