0

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

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

4

4 回答 4

1

如果您,正如您的问题所述,真的想使用replaceAll()而不是 (在我看来更合适) replace(),您可以使用\Qand\E标记从字面上匹配字符串:

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

印刷

instance deleted
于 2012-08-06T18:25:25.697 回答
1

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

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

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

于 2012-08-06T18:20:46.630 回答
0

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

代替()

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

全部替换()

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

于 2012-08-06T18:19:55.170 回答
0

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

于 2012-08-06T18:20:41.223 回答