我目前正在用Java编写正则表达式,并希望尝试在字符串中查找重复的单词。如果我输入了一个字符串,例如'This this is great。'。我使用的是\\b(\\w+) \\1\\b
,但只能识别两个重复的单词,例如字符串中的'this this'。
对此有何帮助?
答案 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)
替换所有重复的字词。