import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "(?:(?P<Day1>\\d{1,2})(?:\\W*(?P<Month1>[A-Z][a-z]*\\b))|(?:(?P<Month2>[A-Z][a-z]*\\b)\\W*)(?:(?P<Day2>\\d{1,2})(?:\\b|th|st|nd))?|(?P<Month3>\\d{1,2})\\W+(?P<Day3>\\d{1,2})|(?P<Month4>\\d{1,2}))?\\W+?(?P<Year>\\d{2,4}(?=$|;))";
final String string = "04/20/2009\n"
+ "04/20/09\n"
+ "4/20/09\n"
+ "4/3/09\n"
+ "Mar-20-2009\n"
+ "Mar 20, 2009\n"
+ "March 20, 2009\n"
+ "Mar. 20, 2009\n"
+ "Mar 20 2009;\n"
+ "20 Mar 2009\n"
+ "20 March 2009\n"
+ "20 Mar. 2009\n"
+ "20 March, 2009\n"
+ "Mar 20th, 2009\n"
+ "Mar 21st, 2009\n"
+ "Mar 22nd, 2009\n"
+ "Feb 2009\n"
+ "Sep 2009\n"
+ "Oct 2010\n"
+ "6/2008\n"
+ "12/2009\n"
+ "2009\n"
+ "2010";
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