如何在DataStudio中用REGEXP_EXTRACT提取下划线分隔的第8段字符串?
解决Data Studio中提取下划线分隔第8段的正则问题
嘿,我来帮你搞定这个正则提取的小问题!你之前的表达式之所以会匹配到第8段为止的所有内容,是因为(?:[^_]*_){8}会先匹配前8个带下划线的分段(也就是从开头到第8段的下划线),然后(.*?)又会捕获后面的所有内容,自然就不是你想要的单独第8段了。
正确的正则表达式
针对Data Studio使用的RE2正则语法,你可以用这个表达式来精准提取第8段:
(?:[^_]*_){7}([^_]*)
为什么这个能行?
让我拆解一下逻辑:
(?:[^_]*_):这是一个非捕获组,用来匹配「任意数量非下划线字符 + 一个下划线」,也就是完整的一个分段(包括后面的下划线)。{7}:重复这个非捕获组7次,刚好跳过前7个分段以及它们后面的下划线。([^_]*):这是我们要的捕获组,匹配「任意数量非下划线字符」——也就是第8个分段的内容,直到下一个下划线或者字符串结尾为止。
在Data Studio中的使用示例
把它放到REGEXP_EXTRACT函数里,像这样:
REGEXP_EXTRACT(你的字段名称, r'(?:[^_]*_){7}([^_]*)')
这里的r前缀是为了让正则表达式按原始字符串解析,避免转义字符的干扰。
用你提供的测试字符串abc_fjs_dja_sja_dj_sadjasdksa_sdjakd_match_fsja_fsdk,这个表达式会精准提取出第8段:match。
内容的提问来源于stack exchange,提问作者J. Ayo
相关产品推荐
相关产品推荐

