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

BigQuery报错Cannot parse regular expression,REGEXP_REPLACE语法问题如何解决?

报错原因

  • 核心问题是REGEXP_REPLACE函数的正则匹配参数(第二个入参)的单引号转义写法错误:你意图用'''表示匹配单引号字符,但在BigQuery SQL语法中,用单引号包裹的字符串内部如果要表示一个单引号字符,需要写两个连续的单引号,也就是整个匹配单引号的参数应该是''''(前后两个是字符串边界,中间两个转义为1个单引号字符)。你当前写的'''会被解析为:前两个单引号转义为1个单引号,第三个单引号作为字符串结束符,后续的, '')会被误识别为正则表达式的一部分,因此触发正则解析错误。
  • 额外优化提示:JSON_EXTRACT返回的JSON字符串默认会自带外层双引号,如果你只是要提取字段的字符串值并去掉外层引号,更推荐直接用JSON_VALUE函数,不需要额外做正则替换,性能和可读性都更好。

解决方案

方案1:修正单引号转义写法(如果确实需要替换内容里的单引号)

把REGEXP_REPLACE的第二个参数改为''''即可,修改后代码如下:

COUNTIF(REGEXP_REPLACE(JSON_EXTRACT(view_context, '$.exit_event'), '''', '') = 'TAP_RIGHT') AS is_view_ctx_tap_right, 
COUNTIF(REGEXP_REPLACE(JSON_EXTRACT(view_context, '$.exit_event'), '''', '') = 'TAP_LEFT') AS is_view_ctx_tap_left

方案2:用JSON_VALUE简化写法(更推荐)

直接用JSON_VALUE提取字符串值,会自动去掉JSON值外层的引号,不需要正则替换操作:

COUNTIF(JSON_VALUE(view_context, '$.exit_event') = 'TAP_RIGHT') AS is_view_ctx_tap_right,
COUNTIF(JSON_VALUE(view_context, '$.exit_event') = 'TAP_LEFT') AS is_view_ctx_tap_left

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 19:51:00