我想使用正则表达式来替换 '"' 值,但前提是该字符后面没有反斜杠
例如
\"Hello\" -> \"Hello\"
"Hello" -> 'Hello'
我使用了以下语句,但删除了“”的前一个字符
[^\\])\"
我如何在java中做到这一点?
最佳答案
使用 negative lookbehind assertion .
string.replaceAll("(?<!\\\\)\"", "'");
在java正则表达式中\\\\
匹配单个反斜杠。所以(?<!\\\\)\"
仅当双引号前面没有反斜杠时才匹配。
String s1 = "\\\"Hello\\\"";
String s2 = "\"Hello\"";
System.out.println(s1.replaceAll("(?<!\\\\)\"", "'"));
System.out.println(s2.replaceAll("(?<!\\\\)\"", "'"));
输出:
\"Hello\"
'Hello'
关于java - 在java反斜杠和quate中用正则表达式否定和替换字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27373989/