使用正则拆分管道分隔文件提取指定字段遇空字段失效如何解决
问题根因
原有正则中使用[^|]+匹配字段内容,量词+要求至少匹配1个非竖线字符,遇到连续竖线组成的空字段时无法匹配,直接导致整个正则匹配失败。
修复方法
把所有匹配字段内容的量词从+替换为*,*支持匹配0个或多个字符,可完美兼容空字段场景。
- 提取第n个字段的通用正则模板:
^((?:[^|]*\|){n-1})(?P<target>[^|]*) - 示例:提取示例数据中第5个空字段的正则为:
^((?:[^|]*\|){4})(?P<field5>[^|]*)
效果验证
针对示例数据asdw|qwe|23344|as||sada||ssss|sdd测试:
- 提取第4个字段可正常得到结果
as - 提取第5、7个空字段可正常返回空匹配,符合预期
- 提取第8个字段可正常得到结果
ssss
内容的提问来源于stack exchange,提问作者Akash Ranjan
相关产品推荐
相关产品推荐

