ArrayFormulaとFILTERの組み合わせを使用して、すべての検索語を含む列のすべてのセルを一覧表示しています。私のFILTERにTRUE/FALSEを返す他の基準があるので、私はQUERY/CONTAINS/LIKEではなくREGEXMATCHを使用しています。複数の単語に一致するすべての文字列セルを検索するRegexmatch
私の問題は優先順位のようです。したがって、次の正規表現は制限された方法で動作します。
=ArrayFormula(filter(A1:A5,regexmatch(A1:A5,"(?i)^"&"(.*?\bbob\b)(.*?\bcat\b)"&".*$")))
ボブとネコを見つけますが、ボブがネコに先行する場合のみです。 ?
、Googleのシートは、私が先読みを使用しようとする場合、私は使用したくない
=ArrayFormula(filter(A1:A5,regexmatch(A1:A5,"(?i)^"&"(?=.*?\bbob\b)(?=.*?\bcat\b)"&".*$")))
すなわち=失敗しました「|」入力語と同じ文字列(繰り返しと逆)の交替は2つ以上あるので、交互に指数関数的に複雑になります。
ここ...テスト検索アレイ(各行は、文字列を含む単一のセルである)です
Bob ate the dead cat
The cat ate live bob
No cat ate live dog
Bob is dead
Bob and the cat are alive
...、所望の結果は、私は後です。
Bob ate the dead cat
The cat ate live bob
Bob and the cat are alive
私は正規表現を整理した後、最終的な解決策は、彼らは単に文字列、すなわち「ボブキャット」に記載されていなければならない単語を入力し、ユーザの入力テキストボックスになります。この入力文字列は、別の言葉に解凍して上記の式に連結することができますが、これを行うためのベストプラクティスの方法がある場合は、私が聞きたいのですが。
RE2エンジンはテキストを消費することなくパターンを確認することができ先読みをサポートしていません。 regexmatch(A1:A5、 '(?i)\ bcat \ b')正規表現を使用すると、 )) ')。 –