在google data studio中使用google-re2进行带Lookback和lookforward的regexp提取
我正在尝试在在google data studio中使用google-re2进行带Lookback和lookforward的regexp提取,regex,google-data-studio,re2,Regex,Google Data Studio,Re2,我正在尝试在CASE语句中构建一个REGEXP\u EXTRACT查询,该语句的运行方式与我想要的不太一样: 示例数据: 1234-ABC 1234-abc 1234-ABC-1a 1234 1234-abc-test-this 我想从查询中找出ABC | ABC,如果存在的话。如果它不存在,我想返回一个默认值 我找到了一个页面,在那里我可以看到正则表达式的可能性 我知道如何构建案例: CASE WHEN REGEXP_MATCH(Eventcategory, '^([0-9])*-(
CASE
语句中构建一个REGEXP\u EXTRACT
查询,该语句的运行方式与我想要的不太一样:
示例数据:
1234-ABC
1234-abc
1234-ABC-1a
1234
1234-abc-test-this
我想从查询中找出ABC | ABC
,如果存在的话。如果它不存在,我想返回一个默认值
我找到了一个页面,在那里我可以看到正则表达式的可能性
我知道如何构建案例:
CASE
WHEN REGEXP_MATCH(Eventcategory, '^([0-9])*-([a-zA-Z0-9])*$') THEN 'it matches 1234-ABC and 1234-abc'
WHEN REGEXP_MATCH(Eventcategory, '^([0-9])*-([a-zA-Z0-9])*-([a-zA-Z0-9])*') THEN 'it matches 1234-ABC-1a and 1234-abc-test-this'
ELSE "it matches 1234"
END
问题在于提取Eventcategory
的正确部分
到目前为止,我所尝试的:
REGEXP_EXTRACT(Eventcategory, '-([a-zA-Z0-9])*-') // Then it was only still needed to remove the - at the beginning and end
REGEXP_EXTRACT(Eventcategory, '-([a-zA-Z0-9])*$') // if it was 1234-Abc
REGEXP_EXTRACT(Eventcategory, '(?=^([0-9])*-)((-[a-zA-Z])*)')
REGEXP_EXTRACT(Eventcategory, '((-[a-zA-Z])*)')
REGEXP_EXTRACT(Eventcategory, '(?=^([0-9])*-)((-[a-zA-Z])*)')
REGEXP_EXTRACT(Eventcategory, '(-([a-zA-Z])+)')
REGEXP_EXTRACT(Eventcategory, '(?=(^([0-9])*-))(-([a-zA-Z])+)')
真的希望有人能帮助我,因为我现在没有任何选择余地。要使您的模式正常工作,您需要在需要提取的模式部分周围使用一个捕获组,将
*
放在字符类之后,并移除$
锚定:
'^[0-9]*-([a-zA-Z0-9]*)'
或者,您也可以通过将*
(0或更多)替换为+
(1或更多)来确保每个子模式至少匹配1个字符:
看
或者,您可以使用
^[^-]+-([^-]+)
它会匹配的
-字符串的开头^
-1个或多个字符,而不是[^-]+
-
-连字符-
-第1组(您提取的值):除([^-]+)
-
^[^-]+-([^-]+)