我正在使用ArrayFormula和FILTER組合來列出包含所有搜索字詞的列中的所有單元格。我使用的是REGEXMATCH而不是QUERY/CONTAINS/LIKE,因爲我的FILTER有其他條件返回TRUE/FALSE。Regexmatch查找匹配多個單詞的所有字符串單元
我的問題似乎是優先。所以下面的正則表達式以有限的方式工作。
=ArrayFormula(filter(A1:A5,regexmatch(A1:A5,"(?i)^"&"(.*?\bbob\b)(.*?\bcat\b)"&".*$")))
它會找到鮑勃和貓,但只有當鮑勃先於貓。如果我嘗試使用前瞻
谷歌牀單失敗=即
=ArrayFormula(filter(A1:A5,regexmatch(A1:A5,"(?i)^"&"(?=.*?\bbob\b)(?=.*?\bcat\b)"&".*$")))
我不想用?「|」在字符串中的交替(重複和反向)作爲輸入字可能多於兩個,因此交替變得指數更復雜。
這裏的測試搜索陣列(每行是包含字符串的單電池)...
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)\ bBob \ b'),regexmatch(A1:A5,'(?i)\ bcat \ b' ))'。 –