【发布时间】:2015-04-05 01:08:12
【问题描述】:
我想在字符串的可选部分捕获一个组。
例如:
在字符串“firstName:Bill-lastName:Gates”中,我想捕获2组:
- 比尔
- 盖茨
我使用这个正则表达式:
firstName:(.*)-lastName:(.*)
但是当lastName-part是可选的时候,我还是想抓到第一个 组(名字)。
我使用了这个正则表达式,使 lastName 部分成为可选的(在非捕获组中):
firstName:(.*)(?:-lastName:(.*))?
使用这个更新的正则表达式,生成的组是:
-
当 lastName 部分不存在时,例如 "firstName:Bill" 捕获的组是:
- 比尔
- /空字符串/
这是正确的,
-
当 firstName 和 lastName 部分存在时:"firstName:Bill-lastName:Gates",组不正确:
- 比尔姓氏:盖茨
- /空/
我认为这与第一个捕获组的贪婪有关,但是当 lastName-part 是可选的时,如何调整这个正则表达式以使正则表达式工作?
【问题讨论】:
标签: c# regex regex-group