BigQuery正则表达式处理:提取下划线前内容并移除末尾数字
解决方案
在BigQuery中可以通过两步正则处理直接实现需求,以下是完整的SQL示例:
测试数据与SQL代码
WITH test_data AS ( SELECT 'LN12_FACI_02AB' AS original_str UNION ALL SELECT 'LNR12AB23_FACI' AS original_str ) SELECT original_str, -- 第一步:提取第一个下划线前的内容 REGEXP_EXTRACT(original_str, r'^[^_]+') AS first_part, -- 第二步:移除first_part末尾的数字,合并成一步的写法 REGEXP_REPLACE(REGEXP_EXTRACT(original_str, r'^[^_]+'), r'\d+$', '') AS final_result FROM test_data;
正则规则说明
r'^[^_]+':匹配字符串开头到第一个下划线_之前的所有非下划线字符,精准提取第一部分内容r'\d+$':匹配字符串末尾连续的数字(\d表示数字,+表示一个或多个,$表示末尾位置),替换为空字符串即可移除末尾数字
执行结果
| original_str | first_part | final_result |
|---|---|---|
| LN12_FACI_02AB | LN12 | LN |
| LNR12AB23_FACI | LNR12AB23 | LNR12AB |
如果追求更简洁的写法,也可以把两个正则逻辑合并为一个(可读性稍弱):
REGEXP_EXTRACT(original_str, r'^(\D*\d*?)\d*_')
内容的提问来源于stack exchange,提问作者Goutham mano
相关产品推荐
相关产品推荐

