import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "^\n"
+ "#whitespace\n"
+ "([ ]*)\n"
+ "(?:\n"
+ " # Error position - line location \n"
+ " (-{6,})([\\^])\n"
+ " |\n"
+ " # Line number\n"
+ " ([\\d]+)\n"
+ " # Line number delim\n"
+ " ([\\|])\n"
+ " # Code indent\n"
+ " ([ \\t]*)\n"
+ " (?:\n"
+ " # Comment ?\n"
+ " ([\\/]{2}.+)?\n"
+ " |\n"
+ " # Else code block line\n"
+ " (.*)\n"
+ " )\n"
+ " $\n"
+ ")\n"
+ "|\n"
+ "# Function delim token\n"
+ "(at +)\n"
+ "# Function\n"
+ "(.+?)\n"
+ "# (, Path base\n"
+ "([\\(].+?)\n"
+ "# File\n"
+ "([^\\/]+?)\n"
+ "# Line:char\n"
+ "(?:(:)(\\d+))?\n"
+ "(?:(:)(\\d+))?\n"
+ "# Function path\n"
+ "([\\)])";
final String string = " watching /Users/disk0/.nvm/versions/node/v13.2.0/lib/node_modules/stylus/lib/functions/index.styl\n"
+ "ParseError: inject/code-custom.styl:125:44\n"
+ " 121| else\n"
+ " 122| // Add room for window controls\n"
+ " 123| body.mac \n"
+ " 124| // Only target first tab bar\n"
+ " 125| [data-keybinding-context=\"1\"] .tabs-and-actions-container\n"
+ "---------------------------------------------------^\n"
+ " 126| & .tabs-and-actions-container\n"
+ " 127| padding-left: 9em\n"
+ " 128| & .dragging-area-left-padding\n\n"
+ "expected \":\", got \")\"\n\n"
+ " at Parser.error (/Users/disk0/.nvm/versions/node/v13.2.0/lib/node_modules/stylus/lib/parser.js:259:11)\n"
+ " at Parser.expect (/Users/disk0/.nvm/versions/node/v13.2.0/lib/node_modules/stylus/lib/parser.js:287:12)\n"
+ " at Parser.ternary (/Users/disk0/.nvm/versions/node/v13.2.0/lib/node_modules/stylus/lib/parser.js:1964:12)\n"
+ " at Parser.negation (/Users/disk0/.nvm/versions/node/v13.2.0/lib/node_modules/stylus/lib/parser.js:1953:17)\n"
+ " at Parser.expression (/Users/disk0/.nvm/versions/node/v13.2.0/lib/node_modules/stylus/lib/parser.js:1932:24)\n"
+ " at Parser.ternary (/Users/disk0/.nvm/versions/node/v13.2.0/lib/node_modules/stylus/lib/parser.js:1963:27)\n"
+ " at Parser.negation (/Users/disk0/.nvm/versions/node/v13.2.0/lib/node_modules/stylus/lib/parser.js:1953:17)\n"
+ " at Parser.expression (/Users/disk0/.nvm/versions/node/v13.2.0/lib/node_modules/stylus/lib/parser.js:1932:24)\n"
+ " at Parser.primary (/Users/disk0/.nvm/versions/node/v13.2.0/lib/node_modules/stylus/lib/parser.js:2250:23)\n"
+ " at Parser.member (/Users/disk0/.nvm/versions/node/v13.2.0/lib/node_modules/stylus/lib/parser.js:2174:21)\n"
+ " compiled inject/FontLoad.css\n"
+ " watching inject/FontLoad.styl\n";
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