【发布时间】:2017-11-08 10:46:17
【问题描述】:
我正在尝试在 CASE 语句中构建一个 REGEXP_EXTRACT 查询,但效果并不理想:
示例数据:
1234-ABC
1234-abc
1234-ABC-1a
1234
1234-abc-test-this
我想要的是从查询中捕获ABC|abc(如果存在)。如果它不存在,我想返回一个默认值。
我找到了一个页面,可以看到Google-RE2 RegEx 的正则表达式可能性。
我知道如何构建案例:
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])+)')
真的希望有人可以帮助我,因为我目前没有任何选择。
【问题讨论】:
标签: regex google-data-studio re2