在字符串正则表达式C / W中查找重复的单词

时间:2013-03-26 01:08:11

标签: java regex string duplicates words

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

对此有何帮助?

2 个答案:

答案 0 :(得分:2)

将“忽略大小写”切换(?i)添加到正则表达式:

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

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

input.toLowerCase()

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

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

答案 1 :(得分:1)

String pattern = "\\b(\\w+)(\\b\\W+\\b\\1\\b)*"; 
Pattern r = Pattern.compile(pattern, Pattern.CASE_INSENSITIVE);

您可以使用Matcher.group()Matcher.group(1)替换所有重复的字词。