如何在BigQuery中移除大写字母前的小写字母?
BigQuery正则替换大写字母前小写字母的解决方案
报错原因
BigQuery采用的是RE2正则引擎,不支持你之前使用的(?=)这类Perl风格正向先行断言,这就是触发invalid perl operator: (?=错误的核心原因。
适配解决方案
利用RE2支持的捕获组功能,把需要保留的大写字母捕获下来,替换时只保留该捕获内容,从而删除前面的小写字母。
示例SQL代码
SELECT REGEXP_REPLACE( 'aDepartment of test, kHospital of test', r'[a-z]([A-Z])', r'\1' ) AS result;
运行结果
Department of test, Hospital of test
原理说明
- 正则表达式
[a-z]([A-Z]):匹配任意小写字母+紧跟的大写字母组合,同时将大写字母存入捕获组1中。 - 替换值
\1:将匹配到的“小写字母+大写字母”组合,替换为捕获组1中的大写字母,相当于直接删除了前面的小写字母,实现预期效果。
内容的提问来源于stack exchange,提问作者SHIVAM SINGH
相关产品推荐
相关产品推荐

