用异常替换字符串中的文本

时间:2016-12-17 17:47:50

标签: java regex

我想替换java字符串中的一些文本,但如果文本位于$和&所定义的部分内,我不想替换它。 示例:替换文本foo的字符串“$ foo& bar foo”将为“$ foo& bar $ foo&”。 因此必须使用$和&转义替换文本。但是如果已经应用了逃生则不行。目前我正在使用正则表达式([^\\$]|^)text([^&]|$)并且它运行良好,但如果只找到其中​​一个符号,则正则表达式不匹配。 示例:对于文本“bar $ foo”,正则表达式([^\\$]|^)foo([^&]|$)不匹配,但仅当找到两个符号时我才想要不匹配。

1 个答案:

答案 0 :(得分:3)

$使用否定后瞻,为&使用否定前瞻。这对你有用:

public static void main(String[] args) {
    String s = "$foo& bar foo";
    s= s.replaceAll("(?<!\\$)foo(?!&)", "\\$foo&");
    System.out.println(s);
}

O / P:

$foo& bar $foo&