fork(5) 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 s = "<?xml version=\"1.0\" encoding=\"UTF-8\"?> <resources> <resource> <properties> <property name=\"name\" value=\"retrieveFoo\"/>\n<property name=\"foo\" value=\"Some corrupted String because of \"something\" like that\"/>";
  13. StringBuffer result = new StringBuffer();
  14. Matcher m = Pattern.compile("(\\s+[\\w:.-]+=\")([^\"]*(?:\"(?!\\s+[\\w:.-]+=\"|\\s*(?:/?|\\?)>)[^\"]*)*)\"").matcher(s);
  15. while (m.find()) {
  16. m.appendReplacement(result, m.group(1) + m.group(2).replace("\"", "&quot;") + "\"");
  17. }
  18. m.appendTail(result);
  19. System.out.println(result.toString());
  20.  
  21. }
  22. }
Success #stdin #stdout 0.11s 320512KB
stdin
Standard input is empty
stdout
<?xml version="1.0" encoding="UTF-8"?> <resources> <resource> <properties> <property name="name" value="retrieveFoo"/>
<property name="foo" value="Some corrupted String because of &quot;something&quot; like that"/>