import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "\\/\\*\\*[\\s\\S]*?@config\\s*(\\{[\\s\\S]*?\\})[\\s\\S]*?\\*\\/\\s*[\\#\\.]?([\\w-]+)\\s*(?:[\\#\\.]*([\\w-]+)\\s*)*\\{";
final String string = "Works all one one line..\n\n"
+ "/**\n"
+ "* \n"
+ "* Some ignored comments here...\n"
+ "* @config { name:'Orange Title (70pt)'}\n"
+ "*/\n"
+ "h1.title_orange {\n\n"
+ "}\n\n\n"
+ "Works on multiple lines, with extra lines in comment\n\n"
+ "/**\n"
+ "* \n\n\n"
+ "* Some ignored comments here...\n"
+ "* @config {\n"
+ " name:'Green Title (70pt)', \n"
+ " order:1\n"
+ " }\n"
+ "*/\n"
+ "div.green_title {\n\n"
+ "}\n\n\n"
+ "Workson multiple lines, with extra lines in comment\n\n"
+ "/**\n"
+ "* @config { name:'Blue Title (70pt)', \n"
+ " order:1 }\n"
+ "* comments coud be here\n"
+ "*\n"
+ "*/\n"
+ "span.blue {\n\n"
+ "}\n\n\n"
+ "THis doesnt work due to the mutliple classes..... Not sure what im going to do with this yet, probably just match the first one - I suppose we could have multiple @config attributes matched in order to the definitions, but that sounds very hard....\n\n"
+ "/** \n"
+ " * @config { name:'Blue Title (70pt)'}\n"
+ " */\n"
+ "div.blue, div.bigBlue {\n\n"
+ "}";
final Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
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