Google SQL中如何使用REGEX_EXTRACT提取GH Name对应内容
提取字符串中GH Name字段值的实现方法
场景说明
数据表字段中存储的字符串统一采用-作为分段分隔符,格式示例如下:
BA - GH: 236274637437 - GH Name: HHG PRIO BHTG SAMP RAND - 6384 - 38k - Own: dhgfhdh
当前已完成Own字段的正则提取逻辑,需要编写正则精准匹配GH Name后到下一个分隔符前的内容,避免带入后续分段的无关字符。
可直接使用的SQL代码
SELECT COLNAME, -- 提取GH Name字段值 REGEXP_EXTRACT(COLNAME, r'GH Name: (.*?)(?: - |$)', 1) AS gh_name, -- 优化原有Own字段提取逻辑,去除前缀、避免冗余匹配 REGEXP_EXTRACT(COLNAME, r'Own: (.*?)(?: - |$)', 1) AS own FROM tablename
正则逻辑说明
- 前缀匹配
GH Name::精准定位目标字段的起始位置,避免误匹配其他带GH、Name关键词的无关片段 - 捕获组
(.*?):采用非贪婪模式匹配任意字符,匹配到第一个截止标记就停止,这部分就是需要提取的GH Name内容 - 截止匹配
(?: - |$):用非捕获组匹配两种终止场景:要么是字段间的-分隔符,要么是字符串末尾(兼容GH Name为字符串最后一个字段的情况) - 函数末尾的参数
1:指定返回第一个捕获组的内容,自动去掉GH Name:前缀,拿到纯字段值
注意不要用
GH Name:.* -这类贪婪匹配写法,贪婪模式会一直匹配到字符串最后一个-分隔符,会把后续的6384、38k等无关内容都带入结果中。
内容的提问来源于stack exchange,提问作者jayjay_roy
相关产品推荐
相关产品推荐

