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