import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "(?:(?:(\\/)(\\*)|([\"'])).*?(?:\\2\\1|\\3))|(?:\\/\\/[^\\n]+)";
final String string = "\n"
+ " //get means only read, but not to mutate data\n"
+ " Get(BooksWithAuthors)\n"
+ " //default queries via mycel\n"
+ " .Query()\n"
+ " //junction table to pair books and authors\n"
+ " .From(\"BookAuthor\".As(BA))\n"
+ " //main table for books\n"
+ " .Join(left: Books.As(B) => B.Id == BA.BookId)\n"
+ " //main table for authors\n"
+ " .Join(left: Authors.As(A) => A.Id == BA.AuthorId)\n"
+ " //groups by column, body allows to restore data (restructuring)\n"
+ " .GroupBy(B.Id, => { B.Authors.Add(A) })\n"
+ " //ignore still registerd data objects for the response\n"
+ " .SelectIgnore(BA)\n"
+ " //or select only that fields or objects you want to response\n"
+ " .Select(B)\n"
+ " .Foo(\"//wrong-comment-inside-quotes\")\n"
+ " .Foo('//wrong-comment-inside-single-quotes')\n"
+ " .Foo('some /*wrong-comment*/ inside')\n"
+ " ;\n\n"
+ " //get means only read, but not to mutate data\n"
+ " Get(BooksWithAuthorsByMethod)\n"
+ " //using individual backside methods (created by own)\n"
+ " .GetBooksWithAuthors(id:6, filter:{key:'minAuthorAge', value:17})\n"
+ " ;\n\n"
+ " /*\n"
+ " comments\n"
+ " \"over\"\n"
+ "*/\n"
+ "/*\n"
+ " 'multiply\n"
+ " lines' //with wrong comments inside\n"
+ " *\\\n\n\n"
+ "aa\"aasdfasdasdf\n"
+ "asdfasdfasdf\n"
+ "asdfasdf\"asdfasd\n";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE | Pattern.DOTALL);
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