如何用单分组Regex提取字符串最后连字符与句点间内容(BigQuery适用)
适配BigQuery的正则表达式方案
要提取最后一个连字符与句点之间的内容,适配BigQuery仅支持单个分组提取的需求,可以使用以下两种正则表达式方案:
通用匹配方案
适用于所有以-xxx.groups结尾的字符串,无需限定前缀规则:
.*-(.*)\.groups
规则说明
.*-:匹配任意字符直到最后一个连字符(-)为止(.*):唯一的捕获组,提取最后一个连字符到句点之间的目标内容\.groups:精准匹配结尾的固定后缀.groups
精准匹配方案
结合你提到的「第二个连字符后固定为prod或nonprod」的规则,避免无关字符串匹配:
^.*-(?:prod|nonprod)-.*-(.*)\.groups$
规则说明
^.*-(?:prod|nonprod)-:匹配开头到prod-或nonprod-的前缀部分,(?:...)是非捕获组,不会生成额外分组.*-:匹配prod/nonprod之后到最后一个连字符的中间内容(.*):唯一的捕获组,提取目标内容\.groups$:精准匹配结尾的固定后缀.groups
BigQuery使用示例
通过REGEXP_EXTRACT函数实现提取:
SELECT REGEXP_EXTRACT('dgov-nonprod-adp-personal.groups', r'.*-(.*)\.groups') AS extracted_value UNION ALL SELECT REGEXP_EXTRACT('dgov-prod-gcp-sensitive.groups', r'.*-(.*)\.groups') AS extracted_value
执行后输出结果:
extracted_value --------------- personal sensitive
内容的提问来源于stack exchange,提问作者unnest_me
相关产品推荐
相关产品推荐

