You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在BigQuery中实现正则正向前瞻与后顾的替代方案?

BigQuery中替代前瞻/后顾正则匹配特定单词前后字符的方法

需求是筛选出单词ben前后存在-或_的字符串,示例如下:

abentest    - 不匹配
bentest     - 不匹配
aben        - 不匹配
a-ben       - 匹配
a_ben       - 匹配
ben-test    - 匹配
a-ben-test  - 匹配
a_ben-test  - 匹配

原本依赖正向前瞻和后顾的正则.*((?<=[_-])(ben)|(ben)(?=[_-])).*在BigQuery的RE2引擎里无法运行,因为RE2不支持零宽断言(前瞻、后顾),可以用以下替代方案:

直接匹配相邻字符组合

使用正则表达式 .*([_-]ben|ben[_-]).*,核心思路是把原本用零宽断言检查的-_字符,直接和ben组合成匹配模式:

  • [_-]ben:匹配-或_紧跟ben的情况(比如a_ben、a-ben里的_ben、-ben)
  • ben[_-]:匹配ben紧跟-或_的情况(比如ben-test里的ben-)

这个正则能准确命中所有符合要求的字符串,同时排除那些ben前后没有-_的场景。

在BigQuery中可以这样使用(以筛选表中符合条件的字段为例):

SELECT your_column
FROM your_table
WHERE REGEXP_CONTAINS(your_column, r'.*([_-]ben|ben[_-]).*')

内容的提问来源于stack exchange,提问作者zangw

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 19:39:26