Google 工作表的正则表达式匹配语法

Regexmatch syntax for Google Sheets

单元格 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 应该 return TRUE,而不是错误。我也试过没有开头和尾部斜线的公式无济于事:

=REGEXMATCH(L2,"#[aA][dD](?![A-z]|[0-9]|-|_|\/|\)")

我在这两种情况下遇到的错误是:

"Function REGEXMATCH parameter 2 value "#[aA]dD" is not a valid regular expression."

我不知道 Google 工作表的正则表达式语法有什么问题,而且我找不到 Google 或其他人在线提供的任何文档。

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_/\-]) - 字符串结尾 ($) 或 (|) 除字母数字以外的任何字符,_/\- 字符。