Looker Studio中REGEXP_MATCH无法匹配带文本的NPS数据求助
Looker Studio中REGEXP_MATCH匹配NPS带文本值失败的解决办法
问题场景
在Looker Studio中使用REGEXP_MATCH()对NPS调查数据做分类(推荐者Promoters、被动者Passives、贬损者Detractors)时,纯数值选项(1-9)能正常匹配,但带附属文本的"0 (not at all likely)"和"10 (extremely likely)"始终无法被识别。尝试多种正则表达式后,仅能匹配9,无法匹配10 (extremely likely)。
试过的正则表达式示例
REGEXP_MATCH(How likely would you be to recommend this offering to others?, r'extremely likely')r'^[0-9]+\s*(extremely likely)$'r'^10\s*(extremely likely)$|^9$'r'^10\s*(extremely likely)$|9'r'^9|10 (extremely likely)$'r'^(9|10 (extremely likely))$'“(9|.*10.*)”"(9|.*extremely likely.*)"
问题原因
你忽略了正则表达式中括号是特殊元字符这一点:目标文本里的(extremely likely)包含字面括号,直接写进正则会被解析为「分组」语法,而不是匹配实际的括号字符,导致正则无法匹配到完整的10 (extremely likely)字符串。
解决办法
方案1:转义特殊字符
将目标文本中的(和)用反斜杠转义为\(和\),让正则将其识别为普通字符。匹配推荐者的正确表达式如下:
REGEXP_MATCH(How likely would you be to recommend this offering to others?, r'^9$|^10\s*\(extremely likely\)$')
方案2:提取数值后判断(更稳定)
如果仅需要基于NPS数值进行分类,可以先提取文本中的数字部分,再做数值比较,完全规避文本匹配的问题:
CASE WHEN CAST(REGEXP_EXTRACT(How likely would you be to recommend this offering to others?, r'^\d+') AS NUMBER) >=9 THEN 'Promoters' WHEN CAST(REGEXP_EXTRACT(How likely would you be to recommend this offering to others?, r'^\d+') AS NUMBER) >=7 THEN 'Passives' ELSE 'Detractors' END
内容的提问来源于stack exchange,提问作者Meredith Smylie
相关产品推荐
相关产品推荐

