java使用正则表达式从字符串中删除模式

时间:2015-08-02 17:12:00

标签: java regex

我需要从以下子字符串中清除我的字符串:

\n

\uXXXXX是数字或字符)

e.g。 "OR\n\nThe Central Site Engineering\u2019s \u201cfrontend\u201d, where developers turn to"

- > "OR The Central Site Engineering frontend , where developers turn to"
我尝试使用String方法replaceAll但dnt知道如何克服\ uXXXX问题以及它没有用于\ n

String s = "\\n";  
data=data.replaceAll(s," ");

这个正则表达式在java中看起来怎么样?

感谢您的帮助

2 个答案:

答案 0 :(得分:5)

string.replaceAll("\\n", " ");的问题是replaceAll期望正则表达式,而正则表达式中的\是特殊字符,例如用于创建表示数字的\d等字符类,或者逃避正则表达式特殊字符,如+

因此,如果您想在Javas正则表达式中匹配\,则需要将其转义两次:

  • 一次使用正则表达式\\
  • 和一次使用字符串"\\\\"

喜欢replaceAll("\\\\n"," ")

您还可以让正则表达式引擎为您转义并使用{/ 1}}方法

replace

现在要删除replace("\\n"," ")我们可以使用

\uXXXX

还要记住,字符串是不可变的,因此每个replaceAll("\\\\u[0-9a-fA-F]{4}","")调用都不会影响str.replace..值,但它会创建新的字符串。因此,如果您想将新字符串存储在str中,则需要使用

str

所以你的解决方案看起来像

str = str.replace(..)

答案 1 :(得分:0)

最好这两部分做到这一点我猜:

String ex = "OR\n\nThe Central Site Engineering\u2019s \u201cfrontend\u201d, where developers turn to";
String part1 = ex.replaceAll("\\\\n"," "); // The firs \\ replaces the backslah, \n replaces the n.
String part2 = part1.replaceAll("u\\d\\d\\d\\d","");
System.out.println(part2);

试试=)