解決 Google 試算表函式 REGEXMATCH 的第 2 參數的值是無效的規則運算式

使用 Google 試算表的 REGEXMATCH 函數遇到「函式 REGEXMATCH 的第 2 參數 的值「C++」是無效的規則運算式。」。解決方式是將特殊字元 + 前面加上反斜線。

Photo by Bob Richards on StockSnap

錯誤狀況


遇到錯誤的欄位值說明

1. A2 欄位文字,包含多種程式語言:C#, Swift, Python, Rust, Go, C++, Java

2. B2 欄位關鍵字:C++

3. C2 欄位是關鍵字搜尋結果

= REGEXMATCH(A2, B2)

遭遇錯誤

顯示「#REF!」,滑鼠游標點選該儲存格,顯示錯誤:函式 REGEXMATCH 的第 2 參數 的值「C++」是無效的規則運算式。

解決方式

+ 符號是正則表達式 (regular expression,或稱正則表達式、正則表示式) 的特殊字元 ,因此需要前面加上反斜線 \ 符號

B2 欄位關鍵字需要修改成:C\+\+

解決方式詳細說明

錯誤訊息提到「 XXX 是無效的規則運算式」,Google Analytics 文件提到

\ 表示鄰接字元應視為常值,而非規則運算式中繼字元

請 ChatGPT 解釋上面這段文字

在規則運算式 (regular expression) 中,某些字元有特殊的意義,被稱為「元字元」(metacharacters)。這些元字元包括像是 `+`、`*`、`?`、`(`、`)` 等,它們用於特定的匹配模式,比如表示重複次數或分組。

當我們希望這些字元被理解為它們字面上的意思,而不是它們作為元字元的特殊功能時,我們需要使用反斜線 `\` 來轉譯這些字元。這意味著 `\` 告訴規則運算式引擎:「接下來的這個字元,請把它當作普通字元處理,而不是作為一個規則運算式的控制字元」。

舉個例子,如果我們想要匹配一個實際的加號 `+`,在不使用轉譯的情況下,規則運算式中的 `+` 有「一個或多個前面的元素」的特殊含義。要讓規則運算式引擎知道我們是要尋找字面上的加號,我們需要在它前面加上反斜線,寫作 `\+`。這樣,`\` 就充當了告訴規則運算式引擎把它後面的字元當作普通字元來處理的角色。

簡單地說

+ 符號在規則運算式有特殊用途:「+ 符號前面一個字,至少重複一次」,例如「C+」代表「至少重複 C 一次」,但是例子的「C++」讓規則運算式引擎困惑,於是回報錯誤「『C++』是無效的規則運算式。」


相關資料

留言