文字列内の単語全体を検索する (ユーザーの検索クエリに一致する) 正規表現を作成しようとしていますが、特定の単語に到達した後はすべて無視したいと考えています。
考えられる検索結果の次のリストを想像してください。
- Foo (Foo バーを参照)
- バー (Foo バーを参照)
- フーバー
正規表現を使用してリスト内の各項目をテストし、「see」という単語の後のすべてを無視したいと考えています。例えば:
- ユーザーが「foo」を検索する場合、1 番目と 3 番目の項目を一致させたいと思います。
- Foo (Foo バーを参照)
- バー (Foo バーを参照)
- フーバー_
- ユーザーが「bar」を検索した場合、2 番目と 3 番目の項目を一致させたいと思います。
- Foo (Foo バーを参照)
- バー(Foo バーを参照)
- フーバー_
私が思いついた正規表現はこれです:
^(?!\(see)(\b%SEARCH%)
...where%SEARCH%
は、検索語が何であれ置き換えられます。
残念ながら、これはすべての場合に機能するとは限りません。検索語が文字列の先頭にある場合 (例: "foo")、アイテムは正しく一致するように見えますが、検索語が文字列の後半にある場合 (例: リストの 3 番目の項目にある "bar") は一致しません。 .
問題を説明するjsfiddle を次に示します。1 番目と 3 番目の例ではすべてが期待どおりに機能しますが、2 番目の例では 3 番目の項目 (「Foo Bar」) も一致するはずですが、一致していません。
私は何を間違っていますか?
ノート:
- 単語全体のみに一致させたいので、
\b
i
修飾子 (大文字と小文字を区別しないため) とg
修飾子 (すべての一致を検索するため)も使用しています。