正则表达式:组或组

施密蒂23

我有一个文本文件,以条形分隔,其中一个字段应该保存城市逗号状态。一个例子:

|Boston, MA|

在我的应用程序中,我需要将城市和州捕获为两个不同的字段。这是处理整行的较大正则表达式的一部分,但处理此字段的部分是:

\|(.+),(.+[^|]+)\|

这会将逗号之前的文本捕获到一个组中,将逗号之后的文本捕获到另一个组中。当字段按预期填写时效果很好。

我的问题是,有时,这个字段会出现:

  • 条形之间没有信息 ( ||)

或 - 不带逗号的文本 ( |unknown|)

我需要修改这个正则表达式,以便:

  • 如果条形之间没有信息,我仍然得到 2 个具有空白值的组

  • 如果有一串不带逗号的文本,则该字符串被捕获为第一组,而第二组被捕获为空值

火花

使用这个正则表达式,你应该得到你所期望的:

\|\s*([^,|]*?)\s*(?:,\s*([^|]*?)\s*)?\|

它填充第 1 组和第 2 组。如果没有逗号,您会得到一个空组 2。如果条形之间没有值(或空格),您会得到两个空组。

如果您希望空格成为匹配项的一部分,则正则表达式如下所示:

\|([^,|]*)(?:,([^|]*))?\|

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章