Google SQL中如何使用REGEX_EXTRACT提取指定位置字符串?
Google SQL 正则提取分隔字符串指定片段实现
你的存储字符串统一以-作为片段分隔符,单片段内部无-字符,以下正则规则可直接满足提取需求,同时兼容片段内部带空格的场景(你原有使用\w的写法仅能匹配连续无空格的单词,遇到片段含空格会匹配失败)。
提取倒数第二个片段(示例对应值:Eng)
正则规则
r'-\s*([^-]+?)\s*-[^-]+$'
匹配逻辑:从字符串末尾向前定位最后一个分隔符,捕获分隔符前的相邻片段,自动过滤片段前后的多余空格。
提取第二个片段(示例对应值:Review Vid)
正则规则
r'^[^-]+-\s*([^-]+?)\s*-'
匹配逻辑:从字符串开头向后定位第一个分隔符,捕获分隔符后的相邻片段,自动过滤片段前后的多余空格。
完整查询示例
SELECT *, -- 提取第二个片段 REGEX_EXTRACT(column_name, r'^[^-]+-\s*([^-]+?)\s*-') AS second_segment, -- 提取倒数第二个片段 REGEX_EXTRACT(column_name, r'-\s*([^-]+?)\s*-[^-]+$') AS penultimate_segment, -- 优化后的最后一个片段提取逻辑,支持带空格的片段 REGEX_EXTRACT(column_name, r'\s*([^-]+?)\s*$') AS lan FROM your_table_name
针对你给出的示例串DadC - Review Vid - Vid - Eng - TC,上述查询返回结果为:
- second_segment:
Review Vid - penultimate_segment:
Eng - lan:
TC
如果你的字符串分隔符存在多空格、制表符等不规则空白,正则里的\s*会自动兼容,不需要额外调整规则。
内容的提问来源于stack exchange,提问作者jayjay_roy
相关产品推荐
相关产品推荐

