5

私は現在Javaで正規表現を使っており、文字列内の重複する単語を見つけたいと思っています。「これはすごい」などの文字列を入力した場合。私はを使用して\\b(\\w+) \\1\\bいましたが、文字列内の「thisthis」などの2つの重複する単語のみを認識します。

これに関して何か助けはありますか?

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()Matcher.group(1)て、重複するすべての単語をこのアプローチで置き換えることができます。

于 2016-03-27T15:14:47.100 に答える