import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "(--[\\w-]+:[\\s]*[^;\\n\\}]+)";
final String string = "these should match\n"
+ ":root {\n"
+ " --externalcolor: red;\n"
+ " --samename: orange;\n"
+ " --samename: #0f0;\n"
+ " --foo: green;\n"
+ " --FOO: #0f0;\n"
+ " --halfsuccess: orange;\n"
+ "/* multiple on one line */\n"
+ " --success: green;--success2: #0f0;\n"
+ "/* forget the ; */\n"
+ " --success: green\n"
+ " --success2: #0f0\n\n"
+ " --fred: var(--foo);\n"
+ " --barney: var(--foo, test)\n"
+ "}\n\n"
+ ":root {\n"
+ " /* name options */\n"
+ " --4name: startsWithNumber;\n"
+ " --name: startsWithLetter;\n"
+ " /* value options */\n"
+ " --startWithLetter: red;\n"
+ " --startWithPound: #0f0;\n"
+ " --startWithNumber: 20px;\n"
+ " --startWithQuoteDouble: \"test\";\n"
+ " --startWithQuoteSingle: 'test';\n"
+ " --containsUrl: url(\"http://test.com/foo?a=b&c=d\");\n"
+ " --containsPunctuation: -_,.;\n"
+ " --containsSpace: \"test space\";\n\n"
+ " /* misc conditions*/\n"
+ " --multipleOnOneLine1: green; --multipleOnOneLine2: #0f0;\n"
+ " --noSpaceAfterColon:test;\n"
+ " --multiSpaceAfterColon: test;\n"
+ " --dash-in-name: test;\n"
+ " --underscore_in_name: test;\n\n"
+ "}\n"
+ " /* minified css */\n"
+ " :root{--almost-black:#222;}html{color:var(--almost-black)}body{color:var(--almost-black);\n\n"
+ "don't match this (the double dash in the comments\n"
+ "/* ----------------------------------------------------- */\n"
+ "@import url(\"https://fonts.googleapis.com/css?family=Roboto:300,400,500,700&display=swap\");\n\n"
+ "on one line\n"
+ "/* ----------------------------------------------------- */ @import url(\"https://fonts.googleapis.com/css?family=Roboto:300,400,500,700&display=swap\");";
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