import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "(\\d+)\\s+(\\w{2})\\s*(\\w{2,5})\\s+(\\w{5})(?:\\s+|\\s+(.)\\s+)(\\w{3})(\\w{3})(?:\\s+|(?:\\s|\\*)(\\w{3})\\s+)(\\w{4,5})\\s+(\\w{4,5})(?:\\s+(\\w{5}))?.*(?:\\n|$)??((?:.|\\n)*?)(\\n\\s*\\n)?(?=\\d+\\s+\\w{2}\\s*\\w{2,5}\\s+\\w{5}(?:\\s+|\\s+.\\s+)\\w{3}\\w{3}(?:\\s+|(?:\\s|\\*)\\w{3}\\s+)\\w{4,5}\\s+\\w{4,5}(?:\\s+\\w{5})?|$)";
final String string = " 1 UA 990J 28OCT SFOCDG 340P 1015A 29OCT greg\n"
+ "2 AF1830J 31OCT CDGMXP 900A 1025A 31OCT\n"
+ "OPERATED BY AIR CANADA\n"
+ "YYZ CHECK-IN WITH AIR CANADA\n"
+ "3 LH 259J 03NOV T MXPFRA 740A 900A 03NOV \n"
+ "OPERATED BY LUFTHANSA\n"
+ "MAD CHECK-IN WITH LUFTHANSA\n\n"
+ "4 DL2252Z 01OCT T SATDTW*SS1 1246P 454P\n"
+ "5 DL 98Z 01OCT T DTWCDG*SS1 608P 805A 02OCT W /DCDL /E\n"
+ "6 DL8322Z 02OCT W CDGBOD*SS1 935A 1050A /DCDL /E\n"
+ "OPERATED BY AIR FRANCE\n"
+ "grggf rge\n"
+ " \n"
+ "7 DL9365Z 09OCT W BODAMS*SS1 1150A 140P /DCDL /E\n\n"
+ "OPERATED BY KLM ROYAL DUTCH AIRLINES\n"
+ "8 DL8178Z 09OCT W AMSSLC*SS1 500P 655P /DCDL /E\n"
+ "OPERATED BY KLM ROYAL DUTCH AIRLINES\n\n\n"
+ "fre\n\n"
+ "f\n"
+ "10 LH 454J 03NOV FRASFO 1005A 205P 03NOV\n\n"
+ "11 LH 454J 03NOV SFOKIV 205P 235P 03NOV";
final Pattern pattern = Pattern.compile(regex);
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