fork download
  1. import java.util.*;
  2. import java.lang.*;
  3. import java.io.*;
  4. import java.util.regex.*;
  5.  
  6. class Ideone
  7. {
  8. public static void main (String[] args) throws java.lang.Exception
  9. {
  10. List<String> strs = Arrays.asList("xxx _italic some text 123 \\_*%&$ _ xxx",
  11. "\\_test_test_");
  12. String regex = "(?s)(?<!\\\\)(?:\\\\{2})*_((?:[^\\\\_]|\\\\.)+)_";
  13. Pattern p = Pattern.compile(regex);
  14. for (String str : strs) {
  15. Matcher m = p.matcher(str);
  16. List<String> result = new ArrayList<>();
  17. while(m.find()) {
  18. result.add(m.group(1));
  19. }
  20. System.out.println(str + " => " + String.join(", ", result));
  21. }
  22. }
  23. }
Success #stdin #stdout 0.2s 36752KB
stdin
Standard input is empty
stdout
xxx _italic some text 123 \_*%&$ _ xxx => italic some text 123 \_*%&$ 
\_test_test_ => test