在Power Query中精准匹配逗号分隔字符串中的指定数字
Power Query精确匹配逗号分隔数字的解决方案
针对你遇到的精确匹配问题,这里有三种实用的解决方法:
方法一:拆分列表后精确匹配
先把逗号分隔的字符串拆成独立元素的列表,再用List.Contains判断目标数字是否存在,完全避免模糊匹配:
= if List.Contains(Text.Split([Example], ", "), "1") then "Yes" else "No"
- 原理:
Text.Split([Example], ", ")会把"1, 3, 6"拆成{"1", "3", "6"}这样的列表,List.Contains只会匹配列表中完全一致的元素,不会把"11"当成"1"。
方法二:使用正则表达式精准匹配
利用正则的边界匹配规则,确保目标数字是独立的元素:
= if Text.Matches([Example], "(?<=^|, )1(?=, |$)") then "Yes" else "No"
- 原理:正则表达式
(?<=^|, )1(?=, |$)的意思是:(?<=^|, ):确保1的前面是字符串开头,或者", "(?=, |$):确保1的后面是", ",或者字符串结尾
这样就限定了1必须是一个单独的分隔元素。
方法三:给字符串补全边界后匹配
通过给原字符串前后添加", ",让所有数字都处于", 数字, "的格式中,再用Text.Contains检查:
= if Text.Contains(", " & [Example] & ", ", ", 1, ") then "Yes" else "No"
- 原理:比如原字符串是
"11, 1",补全后变成", 11, 1, ",里面只有", 1, ",不会匹配到"11"相关的内容;如果原字符串是"1",补全后是", 1, ",同样能匹配到目标。
内容的提问来源于stack exchange,提问作者Michael
相关产品推荐
相关产品推荐

