5

我目前正在使用 Java 中的正则表达式,并想尝试在字符串中查找重复的单词。如果我输入了一个字符串,例如'This this is great.'。我正在使用\\b(\\w+) \\1\\b,但它只能识别两个重复的单词,例如字符串中的“this this”。

对此有任何帮助吗?

4

2 回答 2

2

将“忽略大小写”开关添加(?i)到您的正则表达式:

(?i)\\b(\\w+) \\1\\b

或者,您可以先将输入折叠为小写:

input.toLowerCase()

注意:如果您使用String.matches(),则正则表达式必须匹配整个输入,因此您需要添加.*到正则表达式的两端:

.*(?i)\\b(\\w+) \\1\\b.*
于 2013-03-26T01:11:49.500 回答
1
String pattern = "\\b(\\w+)(\\b\\W+\\b\\1\\b)*"; 
Pattern r = Pattern.compile(pattern, Pattern.CASE_INSENSITIVE);

您可以使用Matcher.group()andMatcher.group(1)用这种方法替换所有重复的单词。

于 2016-03-27T15:14:47.100 回答