如何替换Google Big Query中不支持的正则前瞻表达式?
解决Google BigQuery中提取分隔符前最后一个值的问题
因为BigQuery使用RE2正则引擎,不支持前瞻/后顾语法,所以可以通过以下两种简便方法实现需求:
方法1:字符串拆分+数组索引
通过SPLIT函数将字符串按分隔符拆分为数组,直接取数组的倒数第二个元素(目标值对应数组中倒数第二个位置):
SELECT -- 替换str_col为你的字段名,替换' -> '为实际分隔符 SPLIT(str_col, ' -> ')[SAFE_OFFSET(ARRAY_LENGTH(SPLIT(str_col, ' -> ')) - 2)] AS target_value FROM your_table
SAFE_OFFSET用于避免字符串分隔符数量不足时报错,此时会返回NULL- 若能确保每个字符串至少包含两个分隔符(即至少3个元素),可直接用
OFFSET替代SAFE_OFFSET
方法2:嵌套正则处理
先删除最后一个分隔符及其后的内容,再提取剩余字符串中最后一个分隔符后的部分:
SELECT -- 替换str_col为你的字段名,替换' -> '为实际分隔符 REGEXP_EXTRACT( REGEXP_REPLACE(str_col, r' -> .*$', ''), r' -> ([^ ]+)$' ) AS target_value FROM your_table
- 第一步
REGEXP_REPLACE:匹配最后一个->及其后续所有内容并删除,得到A -> B -> C - 第二步
REGEXP_EXTRACT:从处理后的字符串中提取最后一个->后面的内容,即C
内容的提问来源于stack exchange,提问作者HAIDER TAYYAB
相关产品推荐
相关产品推荐

