正则表达式从管道分隔文件中拆分和提取值

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>[^|]+)