Google表格的Regexmatch语法

时间:2019-01-14 21:05:01

标签: regex google-sheets google-sheets-formula

单元格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或其他在线文档。

1 个答案:

答案 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}}或\字符。

enter image description here