如何在没有环视的情况下在 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 中捕获“搜索”而不是“/搜索”?的主要内容,如果未能解决你的问题,请参考以下文章

如何在正则表达式中使用带有字符的“环视”来捕获整个字符串?

正则表达式 - 使用否定环视匹配同句中的单词

Objective-c:如何在启用纵向锁定的情况下在捕获后修复图像方向

HPCC ECL REGEX 环视背靠背值

如何在不使用 VBA 的情况下在 Excel 中执行反向字符串搜索?

如何在没有开发人员证书的情况下在 Xcode 中归档我的项目?