import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "(?P<issuetime>\\d+/\\w+Z)(?:\\s+(?P<layer>\\w+/\\w+|NOT\\s+AVBL)(?:\\s+(?P<coordinates>(?:\\w\\d{4}\\s\\w\\d{5}\\s-\\s)+\\w\\d{4}\\s\\w\\d{5}\\s))*)?";
final String string = "FCST VA CLD +6 HR: 16/1200Z SFC/FL200 N4517 W04623 - N6356 W01924 -\n"
+ "N7750 E07729 - N3856 E06031 - N4517 W04623 FL200/350 N4839 W04904 -\n"
+ "N7025 E01017 - N7505 E07954 - N6139 E06549 - N4839 W04904\n"
+ "FCST VA CLD +12 HR: 16/1800Z SFC/FL200 N4010 E03817 - N4900 W04529 -\n"
+ "N7112 W00641 - N7617 E09941 - N4010 E03817 FL200/350 N4919 W05700 -\n"
+ "N7300 E03329 - N7732 E09626 - N5936 E09143 - N4919 W05700\n"
+ "FCST VA CLD +18 HR: 17/0000Z SFC/FL200 N4901 W05420 - N7235 E00056 -\n"
+ "N7558 E09708 - N3934 E05131 - N4901 W05420 FL200/350 N4933 W03842 -\n"
+ "N5436 W04127 - N7433 E03732 - N7935 E11430 - N6503 E10238 - N4933\n"
+ "W03842\n"
+ "FCST VA CLD +6 HR: 16/1200Z SFC/FL200 N4517 W04623 - N6356 W01924\n"
+ "FCST VA CLD +12 HR: 16/1800Z NOT AVBL\n"
+ "FCST VA CLD +18 HR: 17/0000Z NOT AVBL RET\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