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

为何在Postgres可用的正则表达式无法在BigQuery中运行?

修复BigQuery中REGEXP_EXTRACT的正则转义错误

在PostgreSQL里,SUBSTRING(my_col, '[0-9\-]+')能正常提取数字和连字符序列,但BigQuery用的是RE2正则引擎,和Postgres的正则规则有差异,才会触发Syntax error: Illegal escape sequence: \-错误。

解决这个问题有两种简单方案:

方法1:调整连字符在字符类中的位置

在正则字符类[]里,连字符如果放在开头或结尾,不需要转义就能直接表示字面量连字符。修改后的查询如下:

REGEXP_EXTRACT(my_col, '[0-9-]+') AS extracted_string

这种写法最简洁,也是RE2引擎推荐的用法。

方法2:使用双反斜杠转义

BigQuery的SQL字符串会先解析一层转义,所以要在正则里表示转义的连字符,得用双反斜杠\\。修改后的查询:

REGEXP_EXTRACT(my_col, '[0-9\\-]+') AS extracted_string

这样SQL会把\\解析成单个\,传递给RE2引擎后,\-就能被正确识别为字面量连字符。

两种方法都能实现你需要的提取数字和连字符序列的效果,优先推荐方法1,代码更易读。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 02:45:31