带有转义字符的Java模式正则表达式

时间:2016-04-05 03:41:19

标签: java

我希望将";"替换为"\n",除非它以前导'\'进行转义。我还没弄明白正确的正则表达式。

这就是我所拥有的:

String s = "abc;efg\\;hij;pqr;xyz\\;123"
s.replaceAll("\\[^\\\\];", "\\\\n");

我希望上面的字符串替换为"abc\nefg\;hij;pqr;xyz\;123"

1 个答案:

答案 0 :(得分:2)

使用负面看法:

s = s.replaceAll("(?<!\\\\);", "\n");

表达式(?<!\\)(编码为java字符串文字"(?<!\\\\)")表示&#34;前一个字符不应该是反斜杠&#34;

测试代码:

String s = "abc;efg\\;hij;pqr;xyz\\;123";
s = s.replaceAll("(?<!\\\\);", "\n");
System.out.println(s);

输出:

abc
efg\;hij
pqr
xyz\;123