我如何在没有环视的情况下捕获RegEx中的“搜索”而不捕获“ /搜索”?

问题描述

BigQuery Standard sql不允许使用环视,我一直在努力解决该限制。如果我想捕获“搜索”而不是“ /搜索”,那么我会使用RegEx (?<!\/)search,如果没有捕获,是否有建议这样做?

解决方法

请参见下面的示例

#standardSQL
WITH example AS (
  SELECT 'search' text UNION ALL
  SELECT '/search' 
)
SELECT text,REGEXP_CONTAINS(text,r'(?:^|[^/])search') match
FROM example    

有输出

Row text    match    
1   search  true     
2   /search false