import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "#Command handler\n"
+ "#===============\n"
+ "#Start of the line\n"
+ "^ #Match the command name\n"
+ "(?<cmd>[\\w\\d\\-\\_\\?]+)\n"
+ "#Catch as many parameters as possible\n"
+ "(?<params>\n"
+ " (\n"
+ " \\ +\n"
+ " (?<pre>[^\\-\\\\\\/\\w\\d\\s\\n\\r]?)\n"
+ " [^\\\"]*\\k<pre>\n"
+ " )*\n"
+ ")?\n"
+ "#Catch as many switches as possible and save them into group\n"
+ "(?<switches>\n"
+ " (\n"
+ " \\ +\n"
+ " #Switch starts with -- or - or /\n"
+ " (?:\\-\\-|\\-|\\/)\n"
+ " #Gotcha!\n"
+ " [\\w\\d\\_]+\n"
+ " )*\n"
+ ")?\n"
+ "#At the end of the line can be some spaces\n"
+ "\\ *$ #End of the line";
final String string = "help\n"
+ "echo \"lol\"\n"
+ "shutdown -s /f";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE | 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