import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "# ./configure parser\n\n"
+ "^(?:\n"
+ " (?:configuring[[:space:]]for[[:space:]](.+))\n"
+ " |\n"
+ " (?:\n"
+ " checking[[:space:]]\n"
+ " (?:\n"
+ " (?:build|host)\n"
+ " [[:space:]]system[[:space:]]type\n"
+ " |\n"
+ " how[[:space:]]to[[:space:]](.+?)\n"
+ " |\n"
+ " for[[:space:]](.+?)\n"
+ " |\n"
+ " whether[[:space:]](?:to[[:space:]])?(.+?)\n"
+ " )[\\.]{3}\n"
+ " )\n"
+ " (?:\n"
+ " [[:space:]]+\n"
+ " (?:\n"
+ " $\n"
+ " |\n"
+ " (?:\n"
+ " (yes)\n"
+ " |\n"
+ " (no)\n"
+ " |\n"
+ " (?<!^)(.*)(?=$|\\n)\n"
+ " )\n"
+ " )\n"
+ " )?.*\n"
+ ")$\n\n"
+ "# ^(?:(?:configuring[[:space:]]for[[:space:]](.+))|(?:checking[[:space:]](?:(?:build|host)[[:space:]]system[[:space:]]type|how[[:space:]]to[[:space:]](.+?)|for[[:space:]](.+?)|whether[[:space:]](?:to[[:space:]])?(.+?))[\\.]{3})(?:[[:space:]]+(?:$|(?:(yes)|(no)|(?<!^)(.*)(?=$|\\n))))?.*)$";
final String string = "configuring for zsh 5.7.1-test-2\n"
+ "checking build system type... x86_64-apple-darwin17.7.0\n"
+ "checking host system type... x86_64-apple-darwin17.7.0\n"
+ "checking for gcc... gcc\n"
+ "checking whether the C compiler works... yes\n"
+ "checking for C compiler default output file name... a.out\n"
+ "checking for suffix of executables... \n"
+ "checking whether we are cross compiling... no\n"
+ "checking for suffix of object files... o\n"
+ "checking whether we are using the GNU C compiler... yes\n"
+ "checking whether gcc accepts -g... yes\n"
+ "checking for gcc option to accept ISO C89... none needed\n"
+ "checking for special C compiler options needed for large files... no\n"
+ "checking for _FILE_OFFSET_BITS value needed for large files... no\n"
+ "checking how to run the C preprocessor... gcc -E\n"
+ "checking for an ANSI C-conforming const... yes\n"
+ "checking for gcc option to accept ANSI C... \n"
+ "checking whether to use prototypes... yes\n"
+ "checking for grep that handles long lines and -e... /usr/local/bin/ggrep\n"
+ "checking for egrep... /usr/local/bin/ggrep -E\n"
+ "checking for ANSI C header files... yes\n"
+ "checking for sys/types.h... yes\n"
+ "checking for sys/stat.h... yes\n"
+ "checking for stdlib.h... yes\n"
+ "checking for string.h... yes\n"
+ "checking for memory.h... yes\n"
+ "checking for strings.h... yes\n"
+ "checking for inttypes.h... yes\n"
+ "checking for stdint.h... yes\n"
+ "checking for unistd.h... yes\n"
+ "checking for size_t... yes\n"
+ "checking for working alloca.h... yes";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE | Pattern.COMMENTS | Pattern.CASE_INSENSITIVE);
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