如何在SQL中用REGEX匹配首字母f尾字母k的单词以标记品牌搜索词
问题修复方案
原正则^[f].*[k]$的逻辑是匹配整个搜索查询字符串以f开头、以k结尾,而非匹配字符串中存在符合「首字母f、尾字母k」规则的单词,因此产生大量误匹配。
调整后的代码如下,同时保留了原有的正确匹配flnk的逻辑:
case when REGEXP_MATCH(Query, '.*(flnk|\\bf[a-zA-Z]*k\\b).*') THEN 'Branded' ELSE 'Non-branded' END
规则说明
\\b是Google Data Studio使用的RE2正则标准中的单词边界标识,用来匹配单词的起止位置,避免匹配到单词中间出现的f、k字符f[a-zA-Z]*k匹配首字母为f、尾字母为k,中间包含任意数量英文字母的单词- 外层
.*保证只要字符串任意位置存在符合规则的内容即可匹配成功 - 如果需要兼容大小写拼写(如Flnk、FLNK等),可以将正则调整为
'.*(flnk|\\b[Ff][a-zA-Z]*[Kk]\\b).*'
如果你的公司名称固定为4位字符,还可以进一步限制中间字母的长度降低误判率,将f[a-zA-Z]*k修改为f[a-zA-Z]{2}k即可,仅匹配长度为4、首f尾k的单词。
内容的提问来源于stack exchange,提问作者Yannik
相关产品推荐
相关产品推荐

