Excel 尋找字串常會使用 FIND、SEARCH 函數。尋找較長的英文字或中文字比較沒問題,但是尋找較短的英文字,常會遇到明明要找的是 app 卻會連 apple 也會列入搜尋範圍。解決方法可以使用支援「規則運算式」(Regular Expression) 的 Google 試算表函數。
問題狀況
微軟文件提到「FIND 及 FINDB 會在某個文字字串內找到另一個文字字串,並傳回該文字字串在第一個文字字串中的起始位置。」如果搜尋中文關鍵字或英文關鍵字的長度夠長,搜尋結果比較沒問題。但是如果英文關鍵字長度較短,例如搜尋 app,則會發現回傳結果並不如預期只有 app。而會連 apple、misappropriate 等詞彙中間包含 app 的其他單字也會回傳。
解決方式
「規則運算式」(Regular Expression,又稱正規表示式) 處理文字時,可以快速地搜尋或取代符合特定規則的字串。使用 REGEXMATCH 函數檢查「某段文字是否符合規則運算式」:
=REGEXMATCH(A1, “\bapp\b")
第一個參數輸入儲存格位置、
第二個參數輸入「規則運算式」語法,其中 \b 代表「單字邊界」(word boundary) 。「單字邊界」可以找出的完整英文單字可以在 (1) 句子開始處、(2) 句子結尾處、(3) 前或後是空白、(4) 前或後是非文字 (non-word) 的符號:指不是數字、底線符號 _ 、英文字,例如 . $ @ - 等符號、(5) 前或後是中文字間隔的單字。
因為 REGEXMATCH 函數會區分大小寫,所以第二參數的「規則運算式」語法需要加上 (?i) 。完整語法修改為:
=REGEXMATCH(A1, "\b(?i)app\b")
參考資料
圖片素材
- 規則運算式語法 (^\w|\w$|\W\w|\w\W) 的說明圖片使用 Regexper 產生,創用 CC 姓名標示授權
- 相片來源 Free photo of typography letter (Thanks, Raphael Schaller!)
留言
張貼留言