私は、単語境界がテキスト内で正確にその単語が見つかっていることを確認し、単語の一部だけが含まれていると他の単語を切り捨てないことを確認しましたが、 Stringの開始と終了。Javaで境界マッチングを使用して正規表現を書く最も効率的な方法は何ですか?
String regex1 = "\\b" + searchedWord + "\\b";
それは私が好きな正規表現を変換しなければならなかったが判明しかし:だから理想的に言葉も始まることが/終了ですので、私は、このような正規表現は、文字列の開始と終了でうまく動作期待
このことは、文字列の開始と終了のためにもうまく動作することを確認するために:私はまだ後者の正規表現を使用して、任意の副作用を発見していない
String regex2 = "(^|\\b)" + searchedWord + "($|\\b)";
、しかし私は、特別な境界またはどのようにがあるかどうかを知りたいです境界線をより効率的に書き込んで、より醜いものにする反直観的ではありません。
もっと良い方法を知っていますか?おそらくあなたはまた、それを使用する問題を認識している場合に備えて、私の提案された正規表現を改善することもできます。
あなたは、動作すると思われるものの完全な例を示してください。通常、単語の境界は文字列の最初と最後で一致する必要があるため、問題は別の場所にある可能性があります。 –
'\ b'は文脈に依存した構造であり、隣接するサブパターンに一致するものに依存します。先頭の '\ b'を'(?<!\ w) 'で置き換え、末尾を'(?!\ w) 'で置き換えたい場合があります。 –
ところで、あなたの 'searchWord'の最初と最後の文字が単語の文字であれば、副作用はありません。 –