我在 google 應用程式腳本中有這個簡單的匹配項,我正在嘗試將其移植到 google 表格中。它只匹配 2 個連續的字母,前面有一個空格,后面有一個字符。
big customers coming back slower, moved to incumbents cc.
這將適用于 GAS:
var match_ar = sentence.match(/\s([a-z])\1\S/)
我正在努力regexmatch做同樣的事情
我試過了regexmatch(B6,"\s(([:alpha:])\1)"),regexmatch(B6,"\s([:alpha:])\1")
我收到一個錯誤 Error Function REGEXMATCH parameter 2 value "\s(([:alpha:])\1)" is not a valid regular expression.
uj5u.com熱心網友回復:
您的正則運算式本身或多或少是正確的,盡管我會更簡單地將其重寫為 (\w)\1\S,除非出于某種原因您需要嵌套的捕獲組。
您真正的問題是 Google 使用 RE2 正則運算式引擎,與 PCRE 不同,它根本不支持反向參考 AFAICT,因此它\1在運算式末尾絆倒了令牌 - 將其洗掉并進行=REGEXMATCH(B6, " (\w)\S")評估就好了。不幸的是,據我所知,這使得在不明確寫出正則運算式中所有可能組合的情況下匹配雙字母是不可能的,這要丑得多:
(?:aa|bb|cc|dd|ee|ff|gg|hh|ii|jj|kk|ll|mm|nn|oo|pp|qq|rr|ss|tt|uu|vv|ww|xx|yy|zz)\S
或者,我的意思是,如果它只是" cc."您要匹配的字串,而不是所有雙字母組合都這樣模式:
cc\.
uj5u.com熱心網友回復:
鑒于您的字串中不太可能有“aardvark”或“llama”或“oogenisis”之類的詞,因此空格雙字母組合后的字符似乎沒有實際意義。換句話說,查找空格雙字母應該只找到您想要的匹配項,而無需再進一步。
也就是說,試試這個:
=ArrayFormula(REGEXMATCH(B6,JOIN("|"," "&REPT(CHAR(96 SEQUENCE(26)),2))))
它類似于貢獻者“Arcaeca”提供的內容,不同之處在于它公式化地構建了長長的雙字母組合串列。
但是,正如“Arcaeca”所指出的,如果您只需要精確 地查找cc,這很簡單:
=REGEXMATCH(B6," cc")
(同樣,任何尾隨句點或其他字符都沒有實際意義。)
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/355715.html
下一篇:論壇IFS1*1=1
