正则表达式从管道分隔文件中拆分和提取值
Regex to split and extract value from pipe delimited file
我想仅使用正则表达式拆分管道 ( | ) 分隔的文件,并在第 n 个位置提取特定字段。在出现空白字段之前,我当前的解决方案工作正常。我无法弄清楚我做错了什么。
示例数据:
asdw|qwe|23344|as||sada||ssss|sdd
我的部分工作解决方案:
^((?:[^|]+\|){3})(?P<error>[^|]+)
https://regex101.com/r/bXvo4T/1
当前解决方案的问题是,当两个连续的分隔符之间没有任何内容出现时,它会失败,至于位置 4,它应该 return 没有匹配,但最终在第 4 个位置之后的所有出现都没有匹配.您可以在 regex101 link shared.
中尝试
只需要将 'One or more token +
' 替换为 'Zero or more token *
',因为它看起来卡住了,两个管道之间没有字符。
我认为以下内容应该可以为您提供所需的结果:
^((?:[^|]*\|){3})(?P<error>[^|]+)
我想仅使用正则表达式拆分管道 ( | ) 分隔的文件,并在第 n 个位置提取特定字段。在出现空白字段之前,我当前的解决方案工作正常。我无法弄清楚我做错了什么。
示例数据:
asdw|qwe|23344|as||sada||ssss|sdd
我的部分工作解决方案:
^((?:[^|]+\|){3})(?P<error>[^|]+)
https://regex101.com/r/bXvo4T/1
当前解决方案的问题是,当两个连续的分隔符之间没有任何内容出现时,它会失败,至于位置 4,它应该 return 没有匹配,但最终在第 4 个位置之后的所有出现都没有匹配.您可以在 regex101 link shared.
中尝试只需要将 'One or more token +
' 替换为 'Zero or more token *
',因为它看起来卡住了,两个管道之间没有字符。
我认为以下内容应该可以为您提供所需的结果:
^((?:[^|]*\|){3})(?P<error>[^|]+)