我有一个文本文件,以条形分隔,其中一个字段应该包含城市逗号状态。一个例子:
|Boston, MA|
在我的应用程序中,我需要捕捉城市和州作为两个不同的领域。这是处理整行的较大正则表达式的一部分,但处理该字段的部分是:
\|(.+),(.+[^|]+)\|
这会将逗号之前的文本捕获到一个组中,然后将文本捕获到另一个组中。当场地按预期填写时效果很好。
我的问题是,有时候,这个字段会出现:
||
)或
- 没有逗号的文字(|unknown|
)
我需要修改这个正则表达式,以便:
如果栏之间没有信息,我仍然会得到2组空白值
如果有一个没有逗号的文本字符串,则该字符串将被捕获为第一组,而第二组则使用空白值捕获
答案 0 :(得分:2)
有了这个正则表达式,你应该得到你期望的结果:
\|\s*([^,|]*?)\s*(?:,\s*([^|]*?)\s*)?\|
它填补了第1组和第2组。 如果没有逗号,则会得到一个空组2。 如果栏之间没有值(或空格),则会得到两个空组。
如果你想让空格成为匹配的一部分,正则表达式将如下所示:
\|([^,|]*)(?:,([^|]*))?\|