正则表达:集团或集团

时间:2017-10-30 12:51:44

标签: regex state comma regex-group city

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

|Boston, MA|

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

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

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

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

  • 栏之间没有信息(||

或 - 没有逗号的文字(|unknown|

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

  • 如果栏之间没有信息,我仍然会得到2组空白值

  • 如果有一个没有逗号的文本字符串,则该字符串将被捕获为第一组,而第二组则使用空白值捕获

1 个答案:

答案 0 :(得分:2)

有了这个正则表达式,你应该得到你期望的结果:

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

它填补了第1组和第2组。 如果没有逗号,则会得到一个空组2。 如果栏之间没有值(或空格),则会得到两个空组。

如果你想让空格成为匹配的一部分,正则表达式将如下所示:

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