2012-03-02 27 views
1

现在我有一个字符串,我想删除\ n并将\ u转换为\\ u。正则表达式

如果字符串包含\\ u,我不会将其更改为\\\ u。

我想使用String.replaceAll(),但我不知道如何编写正则表达式。

请帮帮我。谢谢。

例如:

\ U => \\ü

\\ U => \\ U(什么都不做)

+2

当你说'\ u'改成'\\ u'时,你的意思是给定''\\你想要''\\\\ u“''? (几个例子将是有用的!:-) – aioobe 2012-03-02 09:32:54

+0

@aioobe谢谢你的建议:) – Felix 2012-03-02 09:38:48

回答

4

下面是一个使用负向后看的解决方案。 (变更\u\\u只有当它是\ preceeded。)

String in = "lorem ipsum \\u dolor \\\\u sit \n amet"; 

System.out.println(in); 
System.out.println(in.replaceAll("\\n", "") 
        .replaceAll("(?<!\\\\)\\\\u", "\\\\\\\\u")); 

打印:

lorem ipsum \u dolor \\u sit 
amet 
lorem ipsum \\u dolor \\u sit amet 
  • \n除去
  • 第一\u改变为\\u\\u是p保留原样。
+0

它的工作原理。谢谢:) – Felix 2012-03-02 09:43:31

+0

你能否解释这么多转义的需要?不应该\\足以逃脱\(我不是特别熟悉Java) – RedBaron 2012-03-02 09:44:01

+0

Java字符串文字中的反斜线需要转义,所以'“\\”'代表字符串\。正则表达式也特别对待\,所以你有另一个级别的转义。 – aioobe 2012-03-02 09:47:25