如何双重逃避双重报价?

时间:2014-08-09 17:50:34

标签: java regex replaceall

假设我在java中有这个字符串:

This a "text". This is inches 30". And another 20\"

我想找到所有英寸(数字后面的双引号)并为它添加第二个转义,如果它还没有。

所以在更改之后,字符串就像这样,打印在控制台中:

This is a "text". This is inches 30\". And another 20\"

所以正则表达式必须检查双引号之前是否有数字,如果还没有转义字符......

谢谢!

2 个答案:

答案 0 :(得分:2)

尝试使用Positive Lookbehind

String str="This a \"text\". This is inches 30\". And another 20\\\"";
System.out.println(str.replaceAll("(?<=\\d)\"", "\\\\\""));

输出:

This a "text". This is inches 30\". And another 20\"

这里也是Online demo

模式说明:

  (?<=                     look behind to see if there is:
    \d                       digits (0-9)
  )                        end of look-behind
  \"                       '"'

答案 1 :(得分:0)

         x='This a "text". This is inches 30". And another 20\"'
         print re.sub(r"(\d+)(\")",r"\1\\\2",x)

这是在python中。我不知道java的完全匹配。