在Nifi中删除CSV格式Flowfile列时ReplaceText正则不生效问题
解决方案
你当前的需求是保留CSV每行18列中的前2列、删除后16列,正则失效的问题可按以下步骤排查修正:
1. 修正正则匹配规则
如果你的CSV为无引号嵌套的简单格式,使用如下配置即可生效:
- 匹配正则:
^([^,]+,[^,]+).*$
规则逻辑:匹配每行开头的两组非逗号字符+逗号的组合(即前两列内容),剩余所有内容不进入非捕获区域 - 替换值:
$1
规则逻辑:仅保留第一个捕获组匹配到的前两列内容
2. 修正ReplaceText处理器配置
必须确认以下属性配置正确,否则正则不会生效:
- Evaluation Mode 选择 Line-by-Line,逐行匹配处理CSV内容
- Regex Flags 勾选 Multiline,确保
^和$可以匹配每一行的开头和结尾 - Replacement Strategy 选择 Replace All,匹配所有符合规则的内容
特殊场景说明
如果你的CSV存在字段内包含逗号、被引号包裹的复杂格式,用正则处理容易出现匹配错误,更稳妥的方案是使用ConvertCSVToRecord处理器,指定仅输出前2个字段的schema,过滤掉剩余16个不需要的字段后再转为CSV格式,兼容性更强。
内容的提问来源于stack exchange,提问作者ambrrrgris
相关产品推荐
相关产品推荐

