import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "(?:(?<display>[^<>\\n]+)<)?(?<local>(?:[^\\n \\x22,\\.:;<>@\\[\\\\\\]]{1,64}|[^\\n \\x22,.:;<>@\\[\\\\\\]]{1,32}\\.[^\\n \\x22,.:;<>@\\[\\\\\\]]{1,32}|\\x22[^\\n]{1,62}\\x22))@(?<domain>[\\w.]+(?:\\.\\w{1,4})?|\\[(?:IPv6)?[\\da-fA-F.:]+\\])>?";
final String string = "\n\n"
+ "VALID\n"
+ "Ihavea(comment)tosay@thisistrue.com\n"
+ "John doe<john@doe.com>\n"
+ "simple@example.com\n"
+ "very.common@example.com\n"
+ "FirstName.LastName@EasierReading.org\n"
+ "x@example.com\n"
+ "long.email-address-with-hyphens@and.subdomains.example.com\n"
+ "user.name+tag+sorting@example.com\n"
+ "user.name@example.com\n"
+ "name/surname@example.com\n"
+ "admin@example\n"
+ "example@s.example\n"
+ "\" \"@example.org\n"
+ "\"john..doe\"@example.org\n"
+ "mailhost!username@example.org\n"
+ "\"very.(),:;<>[]\\\".VERY.\\\"very@\\\\ \\\"very\\\".unusual\"@strange.example.com\n"
+ "user%example.com@example.org\n"
+ "user-@example.org\n"
+ "postmaster@[123.123.123.123]\n"
+ "postmaster@[IPv6:2001:0db8:85a3:0000:0000:8a2e:0370:7334]\n"
+ "_test@[IPv6:2001:0db8:85a3:0000:0000:8a2e:0370:7334]\n\n"
+ "I❤️CHOCOLATE@example.com\n\n"
+ "INVALID\n"
+ ".hey@boss.com\n"
+ "yo.hi.hello@man.\n"
+ "abc.example.com\n"
+ "john..doe@hi.com\n"
+ "a@b@c@example.com\n"
+ "a\"b(c)d,e:f;g<h>i[j\\k]l@example.com\n"
+ "just\"not\"right@example.com\n"
+ "this is\"not\\allowed@example.com\n"
+ "this\\ still\\\"not\\\\allowed@example.com\n"
+ "1234567890123456789012345678901234567890123456789012345678901234+x@example.com\n"
+ "i.like.underscores@but_they_are_not_allowed_in_this_part";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
final Matcher matcher = pattern.matcher(string);
while (matcher.find()) {
System.out.println("Full match: " + matcher.group(0));
for (int i = 1; i <= matcher.groupCount(); i++) {
System.out.println("Group " + i + ": " + matcher.group(i));
}
}
}
}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Java, please visit: https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html