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

Posted

技术标签:

【中文标题】如何在没有环视的情况下在 RegEx 中捕获“搜索”而不是“/搜索”?【英文标题】:How can I capture "search" but not "/search" in RegEx WITHOUT lookarounds? 【发布时间】:2020-08-11 14:46:14 【问题描述】:

BigQuery 标准 SQL 不允许环视,我一直在努力解决如何“绕过”这个限制。如果我想捕获“搜索”而不是“/搜索”,我会使用正则表达式 (?<!\/)search 来捕获“搜索”而不是“/搜索”。

【问题讨论】:

【参考方案1】:

见下例

#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    

【讨论】:

以上是关于如何在没有环视的情况下在 RegEx 中捕获“搜索”而不是“/搜索”?的主要内容,如果未能解决你的问题,请参考以下文章