如何替换String对象中的所有正则表达式字符串?

时间:2012-08-06 18:18:10

标签: java regex str-replace

对于字符串str_in = "instance (\\w+\\s+){0,8}deleted";,如何使用replaceAll函数提取实例并删除?

我试过了str_in = str_in.replaceAll("(\\w+\\s+){0,8}", "");,但它没有用。

4 个答案:

答案 0 :(得分:1)

您将需要转义单个字符,以便它们失去正则表达式性质:

str_in.replaceAll("\\(\\\\w\\+\\\\s\\+\\)\\{0,8\\}", "")

由于字符串文字,每个转义反斜杠都需要自行转义。

答案 1 :(得分:1)

如果您(正如您的问题所述)确实想要使用replaceAll()而不是(我认为更合适)replace(),那么您可以使用\Q和{{1} }标记以字面匹配字符串:

\E

打印

String str_in = "instance (\\w+\\s+){0,8}deleted";
System.out.println(str_in.replaceAll("\\Q(\\w+\\s+){0,8}\\E", ""));

答案 2 :(得分:0)

使用str_in.replace("(\\w+\\s+){0,8}", "");

replace()

  

替换此字符串中与文字目标匹配的每个子字符串   具有指定文字替换序列的序列。该   替换从字符串的开头到结尾,为   例如,在字符串“aaa”中将“aa”替换为“b”将导致   “ba”而不是“ab”

replaceAll()

  

将此字符串中与给定正则表达式匹配的每个子字符串替换为给定的替换

答案 3 :(得分:0)

你的意思是(\\w+\\s+){0,8}字面意思是字符串,你想删除它吗?您需要在replaceAll中再次转义每个\,以便按字面解释它们,而不是正则表达式的一部分,以及({