/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
import java.util.regex.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
{
String regex
= "(?m)^\\h*/\\*(?!((?!/\\*)[\\s\\S])*\\*/).*"; String string
= "How do I exclude multiple characters at once.\n\n" + "I need to write regex that can check if a java multi-line comment has no end.\n\n"
+ "For example two comments\n\n"
+ "/* some comment */\n"
+ "and\n\n"
+ "/* Multi line comment start\n"
+ "The regex code must match the 2nd comment but not the first.\n"
+ "/* some comment \n"
+ "I tried something like\n\n"
+ "\\/\\*(.*)[^\\*\\/]\n"
+ "but this only excludes one character. How do I exclude two at once.";
Pattern pattern = Pattern.compile(regex);
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
)); }
}
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CmltcG9ydCBqYXZhLnV0aWwucmVnZXguKjsKCi8qIE5hbWUgb2YgdGhlIGNsYXNzIGhhcyB0byBiZSAiTWFpbiIgb25seSBpZiB0aGUgY2xhc3MgaXMgcHVibGljLiAqLwpjbGFzcyBJZGVvbmUKewoJcHVibGljIHN0YXRpYyB2b2lkIG1haW4gKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBqYXZhLmxhbmcuRXhjZXB0aW9uCgl7CgkJU3RyaW5nIHJlZ2V4ID0gIig/bSleXFxoKi9cXCooPyEoKD8hL1xcKilbXFxzXFxTXSkqXFwqLykuKiI7CgkJU3RyaW5nIHN0cmluZyA9ICJIb3cgZG8gSSBleGNsdWRlIG11bHRpcGxlIGNoYXJhY3RlcnMgYXQgb25jZS5cblxuIgoJCQkgKyAiSSBuZWVkIHRvIHdyaXRlIHJlZ2V4IHRoYXQgY2FuIGNoZWNrIGlmIGEgamF2YSBtdWx0aS1saW5lIGNvbW1lbnQgaGFzIG5vIGVuZC5cblxuIgoJCQkgKyAiRm9yIGV4YW1wbGUgdHdvIGNvbW1lbnRzXG5cbiIKCQkJICsgIi8qIHNvbWUgY29tbWVudCAqL1xuIgoJCQkgKyAiYW5kXG5cbiIKCQkJICsgIi8qIE11bHRpIGxpbmUgY29tbWVudCBzdGFydFxuIgoJCQkgKyAiVGhlIHJlZ2V4IGNvZGUgbXVzdCBtYXRjaCB0aGUgMm5kIGNvbW1lbnQgYnV0IG5vdCB0aGUgZmlyc3QuXG4iCgkJCSArICIvKiBzb21lIGNvbW1lbnQgXG4iCgkJCSArICJJIHRyaWVkIHNvbWV0aGluZyBsaWtlXG5cbiIKCQkJICsgIlxcL1xcKiguKilbXlxcKlxcL11cbiIKCQkJICsgImJ1dCB0aGlzIG9ubHkgZXhjbHVkZXMgb25lIGNoYXJhY3Rlci4gSG93IGRvIEkgZXhjbHVkZSB0d28gYXQgb25jZS4iOwoJCQoJCVBhdHRlcm4gcGF0dGVybiA9IFBhdHRlcm4uY29tcGlsZShyZWdleCk7CgkJTWF0Y2hlciBtYXRjaGVyID0gcGF0dGVybi5tYXRjaGVyKHN0cmluZyk7CgkJCgkJd2hpbGUgKG1hdGNoZXIuZmluZCgpKSB7CgkJICAgIFN5c3RlbS5vdXQucHJpbnRsbigiRnVsbCBtYXRjaDogIiArIG1hdGNoZXIuZ3JvdXAoMCkpOwoJCSAgICBmb3IgKGludCBpID0gMTsgaSA8PSBtYXRjaGVyLmdyb3VwQ291bnQoKTsgaSsrKSB7CgkJICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkdyb3VwICIgKyBpICsgIjogIiArIG1hdGNoZXIuZ3JvdXAoaSkpOwoJCSAgICB9CgkJfQoJfQp9