"foo"
または"foo|baz|bar"
(1つの単語またはのような特殊文字で区切られた複数の単語)の形式のシーケンスのベクトルがあり"|"
、単語も与えられ、ベクトルのどの項目に単語全体が一致するかを調べたいとします。
たとえば、単語"foo"
のは完全一致ですが、または"foo|baz|bar"
のいずれかで完全一致ではありませ"foobaz|bar"
ん"bazfoo"
。
最初に"\\b"
、単語全体の開始エッジまたは終了エッジのいずれかを示すものを使用しようとしましたが、正常に機能します。
grep("\\bfoo\\b", "foo") # match
grep("\\bfoo\\b", "foobaz|bar") # mismatch
grep("\\bfoo\\b", "bazfoo") # mismatch
"|"
次に、両端のもう1つの可能なセパレーターとして追加し、andを使用してグループ化しようとしまし"\\b"
た。[
]
grep("[|\\b]foo[|\\b]", "foo|baz|bar") # mismatch!
grep("[|\\b]foo[|\\b]", "foo") # mismatch!
後で私が見つけたのは、文字列の開始または終了\\b
の指標ではなく、単語全体の開始または終了です(スペースのような非常に多くの文字ですが、数字や下線は単語全体を区切りません)。したがって、これらすべての文字列に一致しますが、またはには一致しません。,|-^.
_
"[|\\b]foo[|\\b]"
"foo", "foo|bar|baz", "foo-bar", "baz foo|bar"
"foo_bar"
"foo2"
しかし、私の質問はまだ残っています:なぜ"[|\\b]foo[|\\b]"
パターンが一致しないの"foo"
ですか?