我目前正在使用 Java 中的正则表达式,并想尝试在字符串中查找重复的单词。如果我输入了一个字符串,例如'This this is great.'。我正在使用\\b(\\w+) \\1\\b
,但它只能识别两个重复的单词,例如字符串中的“this this”。
对此有任何帮助吗?
我目前正在使用 Java 中的正则表达式,并想尝试在字符串中查找重复的单词。如果我输入了一个字符串,例如'This this is great.'。我正在使用\\b(\\w+) \\1\\b
,但它只能识别两个重复的单词,例如字符串中的“this this”。
对此有任何帮助吗?
将“忽略大小写”开关添加(?i)
到您的正则表达式:
(?i)\\b(\\w+) \\1\\b
或者,您可以先将输入折叠为小写:
input.toLowerCase()
注意:如果您使用String.matches()
,则正则表达式必须匹配整个输入,因此您需要添加.*
到正则表达式的两端:
.*(?i)\\b(\\w+) \\1\\b.*
String pattern = "\\b(\\w+)(\\b\\W+\\b\\1\\b)*";
Pattern r = Pattern.compile(pattern, Pattern.CASE_INSENSITIVE);
您可以使用Matcher.group()
andMatcher.group(1)
用这种方法替换所有重复的单词。