如何检查命名的捕获组是否存在?

It'*_*ie. 21 c# regex

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

@"Something\(\d+, ""(.+)""(, .{1,5}, \d+, (?<somename>\d+)?\),"
Run Code Online (Sandbox Code Playgroud)

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

有人能帮我找到解决方法吗?我不需要它有效率,它只是用于一次性程序用于排序,所以我不介意它是否需要运行一点.它不适用于公共代码.

Lee*_*Lee 31

根据文件:

如果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;
Run Code Online (Sandbox Code Playgroud)

  • 我期待一个IndexOutOfRangeException.应该试试吧.笨.谢谢!+1. (2认同)