import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "(?:(\\d{2})(?:0(?=(?:\\1)1)|1(?=(?:\\1)2)|2(?=(?:\\1)3)|3(?=(?:\\1)4)|4(?=(?:\\1)5)|5(?=(?:\\1)6)|6(?=(?:\\1)7)|7(?=(?:\\1)8)|8(?=(?:\\1)9))|(\\d)(?:09(?=(?:\\2)10)|19(?=(?:\\2)20)|29(?=(?:\\2)30)|39(?=(?:\\2)40)|49(?=(?:\\2)50)|59(?=(?:\\2)60)|69(?=(?:\\2)70)|79(?=(?:\\2)80)|89(?=(?:\\2)90))|099(?=100)|199(?=200)|299(?=300)|399(?=400)|499(?=500)|599(?=600)|699(?=700)|799(?=800)|899(?=900)){4,}\\d{3}";
final String string = "531131231331431587\n"
+ "zzz005006007008009010011012zzz\n"
+ "551651751851952052152287\n"
+ "571771871972087\n"
+ "582682882983083183283487\n"
+ "593393593693793893994094194387\n"
+ "564965065165265365487\n"
+ "575775875976076187\n"
+ "526826927027127227487\n"
+ "547747847948048187\n"
+ "518919019119219387\n"
+ "583183283383483583783984084184284387\n"
+ "zzz097098099100101102zzz\n"
+ "zzz198199200201202zzz\n"
+ "zzz297298299300301302zzz\n"
+ "zzz396397398399400401zzz\n"
+ "zzz497498499500501zzz\n"
+ "zzz598599600601602603zzz\n"
+ "zzz697698699700701zzz\n"
+ "zzz796797798799800801zzz\n"
+ "zzz898899900901902903zzz\n"
+ "zzz200201202203204zzz\n"
+ "zzz295296297298299zzz\n"
+ "zzz296297298299300zzz\n"
+ "500000100200300487\n"
+ "599599699799899987\n";
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