import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "^\\[Error: +(?<source_path>(?<file>[^\\s\\n](?:[^\\n:\\\\]+|\\\\.)+?)(?::(?<line>\\d+)(?::(?<column>\\d+)))?) *$";
final String string = "/usr/local/lib/node_modules/stylus/bin/stylus:685\n"
+ " throw err;\n"
+ " ^\n\n"
+ "[Error: /Users/user/path/to/stylus/file/invalid.styl:34:5\n"
+ " 30| ==/UserStyle== */\n"
+ " 31| \n"
+ " 32| @-moz-document regexp(\"https?://(www\\\\.)?typescriptlang.org/(v2/)?docs.*$\"),\n"
+ " 33| regexp(\"https?://(www\\\\.)?(staging-)?typescript\\\\.org/docs/.*$\")\n"
+ " 34| error(\"compile error\")\n"
+ "-----------^\n"
+ " 35| \n\n"
+ "compile error\n"
+ "] {\n"
+ " fromStylus: true,\n"
+ " lineno: 34,\n"
+ " column: 5,\n"
+ " filename: '/Users/disk0/git.local/stylus-stylus/static/test/testFiles/invalid.styl',\n"
+ " stylusStack: '',\n"
+ " input: '/* ==UserStyle==\\n' +\n"
+ " '@name TypeScript Docs\\n' +\n"
+ " '@description Expands width of code blocks and moves navigation bar fully to the left\\n' +\n"
+ " '@version 0.0.12\\n' +\n"
+ " '@namespace github.com/disk0/stylus/typescript.org/docs\\n' +\n"
+ " '\\n' +\n"
+ " '@author disk0 (github.com/disco0)\\n' +\n"
+ " '@license MIT\\n' +\n"
+ " '\\n' +\n"
+ " '@preprocessor stylus\\n' +\n"
+ " '\\n' +\n"
+ " '@var select CodeFont \"Font for code displayed on page.\" [\\n' +\n"
+ " ' \"Iosevka Extended*\",\\n' +\n"
+ " ' \"Iosevka Expanded\",\\n' +\n"
+ " ' \"Iosevka Term\",\\n' +\n"
+ " ' \"Iosevka\",\\n' +\n"
+ " '\\n' +\n"
+ " ' \"SemanticHaskell\",\\n' +\n"
+ " ' \"SemanticJavascript\",\\n' +\n"
+ " ' \"SemanticCode\",\\n' +\n"
+ " ' \"Hasklig\",\\n' +\n"
+ " '\\n' +\n"
+ " ' \"PragmataPro Mono Liga\",\\n' +\n"
+ " '\\n' +\n"
+ " ' \"monospace\"\\n' +\n"
+ " ']\\n' +\n"
+ " '@var number CodeFontSize \"Size of code in documentation\" [ 14, 1, 500, 1, \"px\" ]\\n' +\n"
+ " '@var number CodeFontWeight \"Code font weight\" [ 400, 100, 900, 100 ]\\n' +\n"
+ " '@var number DocTextWidth \"Width of text content in documentation\" [ 1000, 300, 5000, 100, \"px\" ]\\n' +\n"
+ " '==/UserStyle== */\\n' +\n"
+ " '\\n' +\n"
+ " '@-moz-document regexp(\"https?://(www\\\\\\\\.)?typescriptlang.org/(v2/)?docs.*$\"),\\n' +\n"
+ " '\\t regexp(\"https?://(www\\\\\\\\.)?(staging-)?typescript\\\\\\\\.org/docs/.*$\")\\n' +\n"
+ " ' error(\"compile error\")\\n'\n"
+ "}\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