如果在字段中的任何位置找到,则匹配单词 "bar"

Match the word "bar" if found anywhere in a field

我正在尝试使用 Google Data Studio 中的 CASE 语句来 return 如果找到给定的字符串,会得到 布尔值 结果在现有字段中。

由于 Google Data Studio 使用 RE2 RegEx 语法,我相信以下内容可行,但它 return 是一个 could not parse formula 错误:

CASE
  WHEN REGEXP_MATCH(Foo, '(\W|^)bar(\W|$)') THEN 1
  ELSE 0
END

我尝试了很多不同的 RegEx 语法组合,但无法解决。任何帮助将不胜感激,因为这应该是一个简单的 REGEXP_MATCH?

如果在字段中的任何位置找到字符串,布尔值 结果应该是 true

+---------------------------+----------------+
|            Foo            | Boolean Result |
+---------------------------+----------------+
| blah bar / boo doo        | True           |
| but is / should not match | False          |
| but match / here bar      | True           |
+---------------------------+----------------+

您需要确保将整个字符串与您要在 REGEXP_MATCH 中使用的模式相匹配,并且在使用正则表达式转义时,确保对它们进行双重转义:

CASE WHEN REGEXP_MATCH(Foo, '(.*\W|^)bar(\W.*|$)') THEN 1 ELSE 0 END

如果 Foo 中有换行符,请在模式的开头添加 (?s)

详情

  • (.*\W|^) - 尽可能多的任何 0+ 个字符后跟一个 non-word 字符或字符串开头
  • bar - 这个词
  • (\W.*|$) - non-word 字符后跟尽可能多的 0+ 个字符或字符串结尾

参见regex demo

下面的一个Boolean field can be created using the single REGEXP_MATCH Calculated Field,其中bar两边的\b表示一个字边界因此匹配bar但是不是 barkembarkembar:

REGEXP_MATCH(Foo, ".*(\bbar\b).*")

Google Data Studio Report 和一张 GIF 来详细说明: