私は現在Javaで正規表現を使っており、文字列内の重複する単語を見つけたいと思っています。「これはすごい」などの文字列を入力した場合。私はを使用して\\b(\\w+) \\1\\b
いましたが、文字列内の「thisthis」などの2つの重複する単語のみを認識します。
これに関して何か助けはありますか?
私は現在Javaで正規表現を使っており、文字列内の重複する単語を見つけたいと思っています。「これはすごい」などの文字列を入力した場合。私はを使用して\\b(\\w+) \\1\\b
いましたが、文字列内の「thisthis」などの2つの重複する単語のみを認識します。
これに関して何か助けはありますか?
「大文字と小文字を区別しない」スイッチ(?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()
しMatcher.group(1)
て、重複するすべての単語をこのアプローチで置き換えることができます。