如果在字段中的任何位置找到,则匹配单词 "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
但是不是 bark
、embark
或 embar
:
REGEXP_MATCH(Foo, ".*(\bbar\b).*")
Google Data Studio Report 和一张 GIF 来详细说明:
我正在尝试使用 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
但是不是 bark
、embark
或 embar
:
REGEXP_MATCH(Foo, ".*(\bbar\b).*")
Google Data Studio Report 和一张 GIF 来详细说明: