27

在我的正则表达式中,模式是这样的:

@"Something\(\d+, ""(.+)""(, .{1,5}, \d+, (?<somename>\d+)?\),"

所以我想知道是否<somename>存在。如果它是一个普通的捕获组,我可以检查捕获组是否大于没有该/那些捕获组的组数,但我在这里没有选项。

谁能帮我找到解决方法?我不需要它高效,它只是用于用于排序的一次性程序,所以我不介意它是否需要运行。它不会用于公共代码。

4

1 回答 1

38

根据文档

如果 groupname 不是集合中的捕获组的名称,或者如果 groupname 是输入字符串中未匹配的捕获组的名称,则该方法返回 Group 对象,其 Group.Success 属性为 false 并且其 Group .Value 属性是 String.Empty。

var regex = new Regex(@"Something\(\d+, ""(.+)""(, .{1,5}, \d+, (?<somename>\d+)?\),");
var match = regex.Match(input);
var group = match.Groups["somename"];
bool exists = group.Success;
于 2013-05-05T21:42:54.457 回答