2

假设您在文件中有以下文本:

word \  sum \"span class=\\"blahblah\\">java

如果我要将文本放入字符串并使用替换方法,如下所示。:

String text = "word \\ sum \\\"span class=\\\\\"blahblah\\\\\">java";
text = text.replace("\\", "");
System.out.println(text);

然后字符串文本将打印为:

word   sum "span class="blahblah">java

但是,我希望双斜杠保持不变。为了只删除单斜线而保持双斜线完好无损,我会改变什么?

期望的输出:

word   sum "span class=\\"blahblah\\">java
4

4 回答 4

4

尝试这个

    text = text.replaceAll("(?<!\\\\)\\\\(?!\\\\)", "");
于 2013-09-24T08:29:25.043 回答
0
String text = "word \\ sum \\\"span class=\\\\\"blahblah\\\\\">java";
text = text.replace("\\\\", "#$%"); // replace '\\' by something unique
text = text.replace("\\", "");//remove the '\'
text = text.replace("#$%", "\\\\");//get '\\' back
于 2013-09-24T07:57:28.597 回答
0

这将从任何奇数长度的连续反斜杠中删除一个反斜杠:

text.replaceAll("(?<!\\\\)(\\\\\\\\)*\\\\(?!\\\\)","$1")

所以在这种情况下

text = "word \\ sum \\\"span class=\\\\\"blah\\\\\\\"blah\\\\\">java"

或者当打印: 时word \ sum \"span class=\\"blah\\\"blah\\">java,结果是:

单词总和 "span class=\\"blah\\"blah\\">java
于 2013-09-24T09:09:16.293 回答
0

查找正则表达式 Lookahead 和 Lookbehind 模式。

http://www.regular-expressions.info/lookaround.html

请记住,lookbehind 在 Javascript 中不起作用。

于 2013-09-24T08:27:31.730 回答