单元格A1包含:
I finally found the best dance partner!! #ad, check out the link in bio
单元格B1包含:
=REGEXMATCH(A1,"/#[aA][dD](?![A-z]|[0-9]|-|_|\/|\\)/")
According to different regex testers,模式
#[aA][dD](?![A-z]|[0-9]|-|_|\/|\\)
有效,应与A1中的字符串匹配。 REGEXMATCH应该返回TRUE,而不是错误。我也尝试了公式,但没有使用开头和结尾的斜杠:
=REGEXMATCH(L2,"#[aA][dD](?![A-z]|[0-9]|-|_|\/|\\)")
我在两种情况下遇到的错误是:
“功能REGEXMATCH参数2的值 “#[aA] dD”不是有效的常规 表达。”
我不知道Google表格的正则表达式语法出了什么问题,也找不到Google或其他在线文档。
答案 0 :(得分:1)
RE2库不支持先行。不支持带有定界符的正则表达式文字表示法,必须删除第一个和最后一个斜杠,否则它们将被解析为正则表达式模式的一部分。 [A-z]
不仅仅可以匹配字母,您还可以将其写为[A-Za-z]
来匹配任何ASCII字母。
使用(?![A-z]|[0-9]|-|_|\/|\\)
代替(?![A-Za-z0-9_/\\-])
(等于(?:$|[^a-z0-9_/\\-])
):
=REGEXMATCH(A1,"(?i)#ad(?:$|[^a-z0-9_/\\-])")
(?i)
是不区分大小写的修饰符,无需编写[aA]
。
详细信息
(?i)
-启用不区分大小写的模式#ad
-#ad
子字符串(?:$|[^a-z0-9_/\\-])
-字符串($
或(|
)的末尾,除字母数字,_
,/
,{{ 1}}或\
字符。