仅匹配一次出现的正则表达式

时间:2013-09-03 22:41:04

标签: java regex

我想在带有正则表达式的字符串中用“==”替换所有出现的“=”,但仅限于出现“=”的情况。

基本上我想改造:

where a = b | c == d

where a == b | c == d

我正在努力寻找的只是一次。我已经尝试了[^=]=[^=],但这也与两边的角色相匹配。

3 个答案:

答案 0 :(得分:3)

您可以尝试使用lookarounds

(?<!=)=(?!=)

使用您的示例:

System.out.println("where a = b | c == d".replaceAll("(?<!=)=(?!=)", "=="));
where a == b | c == d

答案 1 :(得分:1)

[^=](=)[^=]

Regular expression visualization

Edit live on Debuggex

只需使用捕获组并以这种方式选择它们。

答案 2 :(得分:0)

只要使用两侧都有空间的情况。 " = " becomes " == "

String str = input.replace(" = ", " == ");

修改

如果您正在寻找a=6存在且想要成为a==6并且您无法利用定位空间的情况,您可以尝试

[\w ](=)[\w ]

Regular expression visualization

Edit live on Debuggex