Google BigQuery可以做Case-Insensitive REGEXP_Match吗?

Mar*_*urg 3 regex perl google-bigquery

在Google BigQuery中,我想检查"确认"或"确认":

REGEXP_CONTAINS(h.page.PagePath, r'Confirm') or
REGEXP_CONTAINS(h.page.PagePath, r'confirm'))
Run Code Online (Sandbox Code Playgroud)

我是Perl人,在Perl我们这样做

$foo =~ /confirm/i    # case-insensitive
Run Code Online (Sandbox Code Playgroud)

Google BigQuery是否有任何标志可以修改REGEXP_MATCH?我没有在他们的在线文档中看到任何示例.

Wik*_*żew 11

REGEXP_CONTAINS使用RE2库,因此您可以使用这样的内联修饰符:

REGEXP_CONTAINS(h.page.PagePath, r'(?i)confirm') 
                                   ^^^^  
Run Code Online (Sandbox Code Playgroud)

请参阅RE2文档:

(?flags)    在当前组中设置标志; 非捕获...
                                                                标志
i   不区分大小写(默认为false)
m  多行模式:^并且$匹配开始/结束行以及开始/结束文本(默认为false)
s  let .match \n(默认为false)
U  ungreedy:swap的含义x*x*?,x+x+?等等(默认为false)

标志语法是xyz(设置)或-xyz(清除)或xy-z(设置xy,清除z).

  • (?i)在BigQuery中运行良好 - 这是一个例子:SELECT REGEXP_CONTAINS(text,r'(?i)confirm'),REGEXP_CONTAINS(text,r'confirm')FROM(SELECT'I确认它有效'你可以给你的实际查询,看看错误来自哪里 (3认同)