如何在Azure Data Factory数据流中用正则拆分成分字符串?
在Azure Data Factory数据流中拆分成分字符串的正确方法
你遇到的问题根源是用错了函数:regexSplit的作用是将匹配到的正则内容作为分隔符,拆分原字符串,而不是提取符合模式的子串。你的正则[0-9]+%[A-Za-z]*是用来匹配每个成分段的,用它当分隔符自然得不到想要的结果。下面给两种可行的实现方式:
方法一:用regexExtractAll直接提取(推荐)
这个函数会提取所有符合正则模式的子串,返回数组,完全匹配你的需求:
- 在数据流中添加派生列转换
- 新增列(比如命名为
Components),输入以下表达式:
把regexExtractAll(yourSourceColumn, '[0-9]+%[A-Za-z]+')yourSourceColumn替换成你存储目标字符串的源字段名。 - 执行后会得到数组结果:
["57%Acrylic", "27%Polyester", "14%Polyamide", "2%Elastane"]
注:正则里把
[A-Za-z]*改为[A-Za-z]+,确保匹配至少一个字母,避免无效的空匹配。
方法二:用regexSplit按分隔位置拆分
如果坚持要用regexSplit,需要匹配成分段之间的衔接空位置作为分隔符,用正则的正向/反向预查实现:
在派生列中使用以下表达式:
regexSplit(yourSourceColumn, '(?<=[A-Za-z])(?=[0-9])')
这个正则匹配的是字母结尾、数字开头之间的空位置,以此拆分原字符串,同样能得到目标数组。
内容的提问来源于stack exchange,提问作者Rakesh Suryawanshi
相关产品推荐
相关产品推荐

