java - 在java反斜杠和quate中用正则表达式否定和替换字符串

标签 java regex

我想使用正则表达式来替换 '"' 值,但前提是该字符后面没有反斜杠

例如

\"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/

相关文章:

c# - 将 WHERE sql 子句拆分为数组

python - 在新行、制表符和一些空格上拆分字符串

java - 用于在 ArrayList 中查找特定字符串的正则表达式

java - Xerces - SchemaFactory 无法识别该功能,但 Validator 可以识别该功能

java - 为什么我的生产者消费者程序被阻塞?

java - 纸牌游戏中的玩家顺序

java - 您如何解释这段 Javadoc?

regex - 从电子邮件地址中提取域名的一行代码

c# - 正则表达式从名称中提取首字母

java - Bouncy caSTLe key 生成器示例错误