fork(1) download
  1. /* package whatever; // don't place package name! */
  2.  
  3. import java.util.*;
  4. import java.lang.*;
  5. import java.io.*;
  6. import java.util.regex.*;
  7. /* Name of the class has to be "Main" only if the class is public. */
  8. class Ideone
  9. {
  10. public static void main (String[] args) throws java.lang.Exception
  11. {
  12. String SPECIAL_REGEX_CHARS = "[()'\"\\[\\]*]";
  13. //String s = "\"te(st\""; // => "te\(st"
  14. //String s = "te(st"; // => te\(st
  15. String s = "te\"st"; // => te\"st
  16. StringBuffer result = new StringBuffer();
  17. Matcher m = Pattern.compile("(?s)\"(.*)\"|(.*)").matcher(s);
  18. if (m.matches()) {
  19. if (m.group(1) == null) { // we have no quotes around
  20. m.appendReplacement(result, m.group(2).replaceAll(SPECIAL_REGEX_CHARS, "\\\\\\\\$0"));
  21. }
  22. else {
  23. m.appendReplacement(result, "\"" + m.group(1).replaceAll(SPECIAL_REGEX_CHARS, "\\\\\\\\$0") + "\"");
  24. }
  25. }
  26. m.appendTail(result);
  27. System.out.println(result.toString());
  28.  
  29. }
  30. }
Success #stdin #stdout 0.1s 320576KB
stdin
Standard input is empty
stdout
te\"st