import java.util.*;
import java.lang.*;
import java.io.*;
import java.util.regex.*;
class Ideone
{
{
List
<String
> strs
= Arrays.
asList("xxx _italic some text 123 \\_*%&$ _ xxx",
"\\_test_test_");
String regex
= "(?s)(?<!\\\\)(?:\\\\{2})*_((?:[^\\\\_]|\\\\.)+)_"; Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(str);
List<String> result = new ArrayList<>();
while(m.find()) {
result.add(m.group(1));
}
System.
out.
println(str
+ " => " + String.
join(", ", result
)); }
}
}
aW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CmltcG9ydCBqYXZhLnV0aWwucmVnZXguKjsKCmNsYXNzIElkZW9uZQp7CglwdWJsaWMgc3RhdGljIHZvaWQgbWFpbiAoU3RyaW5nW10gYXJncykgdGhyb3dzIGphdmEubGFuZy5FeGNlcHRpb24KCXsKCQlMaXN0PFN0cmluZz4gc3RycyA9IEFycmF5cy5hc0xpc3QoInh4eCBfaXRhbGljIHNvbWUgdGV4dCAxMjMgXFxfKiUmJCBfIHh4eCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcXF90ZXN0X3Rlc3RfIik7CiAgICAgICAgU3RyaW5nIHJlZ2V4ID0gIig/cykoPzwhXFxcXCkoPzpcXFxcezJ9KSpfKCg/OlteXFxcXF9dfFxcXFwuKSspXyI7CiAgICAgICAgUGF0dGVybiBwID0gUGF0dGVybi5jb21waWxlKHJlZ2V4KTsKCQlmb3IgKFN0cmluZyBzdHIgOiBzdHJzKSB7CgkJCU1hdGNoZXIgbSA9IHAubWF0Y2hlcihzdHIpOwoJCQlMaXN0PFN0cmluZz4gcmVzdWx0ID0gbmV3IEFycmF5TGlzdDw+KCk7CgkJCXdoaWxlKG0uZmluZCgpKSB7CgkJCQlyZXN1bHQuYWRkKG0uZ3JvdXAoMSkpOwoJCQl9CgkJCVN5c3RlbS5vdXQucHJpbnRsbihzdHIgKyAiID0+ICIgKyBTdHJpbmcuam9pbigiLCAiLCByZXN1bHQpKTsKCQl9Cgl9Cn0=