import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "# Section header\n"
+ "^ [ \\t]* \\[ [ \\t]* \\w+ [ \\t]* \\] [ \\t]* (?:\\r?\\n)+\n\n"
+ "# Section items\n"
+ "(?:\n"
+ " ^\n"
+ " (?:\n"
+ " # key = value\n"
+ " [ \\t]* [^\\r\\n=]+ [ \\t]* = [ \\t]* [^\\r\\n]* [ \\t]*\n"
+ " |\n"
+ " # comment line\n"
+ " [ \\t]* \\# [^\\r\\n]*\n"
+ " |\n"
+ " # blank\n"
+ " [ \\t]*\n"
+ " )\n"
+ " (?: \\r?\\n | $ )\n"
+ ") *";
final String string = "[ keybinds ]\n"
+ "# comment\n"
+ "bksp = reload\n"
+ "# comment\n"
+ "space = jump # not comment\n\n"
+ " [settings ]\n\n"
+ "resolution = 640 x 480\n"
+ "max_framerate = 24\n\n"
+ "[character]\n"
+ "# This is a comment. This section is empty.\n\n"
+ "[weapons]\n\n"
+ "[server]\n"
+ "login = hexology\n"
+ "password = my password # is not a comment";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE | Pattern.CASE_INSENSITIVE | Pattern.COMMENTS);
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