在我的正则表达式中,模式是这样的:
@"Something\(\d+, ""(.+)""(, .{1,5}, \d+, (?<somename>\d+)?\),"
所以我想知道<somename>
是否存在。如果它是一个正常的捕获组,我可以检查捕获组是否大于没有那个/那些捕获组的组数,但是我没有这里的选项。
有人能帮我找到解决方法吗?我不需要它有效率,它只是用于一次性程序用于排序,所以我不介意它是否需要运行一点。它不适用于公共代码。
答案 0 :(得分:29)
如果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;