从字符串svg JAVA中删除所有转义符号

从字符串svg JAVA中删除所有转义符号,java,svg,Java,Svg,我使用这个正则表达式从字符串svg中删除所有转义符号。replaceAll(“\\{,“{”)我用一个简单的main方法测试了它,比如 System.out.println("<svg xmlns:xlink=\"http://www.w3.org/1999/xlink\" version=\"1.1\" class=\"highcharts-root\" style=\"font-family:&quot;lucida grande&quot;, &quot;lu

我使用这个正则表达式从字符串svg
中删除所有转义符号。replaceAll(“\\{,“{”)
我用一个简单的main方法测试了它,比如

System.out.println("<svg xmlns:xlink=\"http://www.w3.org/1999/xlink\" version=\"1.1\" class=\"highcharts-root\" style=\"font-family:&quot;lucida grande&quot;, &quot;lucida sans unicode&quot;, arial, helvetica, sans-serif;font-size:12px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"600\" height=\"350\"><desc>Created"
        + " with Highcharts 5.0.7</desc><defs><clipPath id=\"highcharts-lqrco8y-45\"><rect x=\"0\" y=\"0\" width=\"580\" height=".replaceAll("\\{", "{"));
试着这样做:

public static void main(String[] args) {
    String test = "abc\\{}def";
    System.out.println("before: " + test);
    System.out.println("after:  " + test.replaceAll("\\\\[{]", "{"));
}
输出

before: abc\{}def
after:  abc{}def

您的第一个示例没有任何“{”字符,所以我并不奇怪它能工作(??)

但无论如何,您的正则表达式是错误的。反斜杠在Java字符串和正则表达式中都是转义字符。所以字符串中的
\
只意味着
\
。这意味着您的正则表达式实际上只是
\{
,这意味着
{/code>。所以您真正做的就是替换
{
{


如果要生成一个用
{
替换
\{
的正则表达式,则需要将正则表达式中的每个反斜杠字符加倍:
\\\\{

与以前的正则表达式相同。我不明白为什么只有在主方法中启动它时它才起作用,但当我在代码中使用它时,正则表达式不起作用。是的,我注意到了这一点,并尝试了您的解决方案,但再次尝试了相同的解决方案。当我在主方法中使用它时,它工作正常,但在我的应用程序中不起作用,如我的第一篇文章所示。passStr=passStr.repaceAll(“\\[{]”,“{”);System.out.println(passStr);在这一行中,我看到调用replaceAll方法后没有任何更改。不知道为什么?!?如果要解析XML,请使用XML解析器。
before: abc\{}def
after:  abc{}def