C#Regex:获取子捕获?

时间:2010-10-03 19:50:45

标签: c# regex

我有一个正则表达式......

internal static readonly Regex _parseSelector = new Regex(@"
    (?<tag>" + _namePattern + @")?
    (?:\.(?<class>" + _namePattern + @"))*
    (?:\#(?<id>" + _namePattern + @"))*
    (?<attr>\[\s*
        (?<name>" + _namePattern + @")\s*
        (?:
            (?<op>[|*~$!^%<>]?=|[<>])\s*
            (?<quote>['""]?)
                (?<value>.*?)
            (?<!\\)\k<quote>\s*
        )?
    \])*
    (?::(?<pseudo>" + _namePattern + @"))*
", RegexOptions.IgnorePatternWhitespace);

我抓住了匹配对象......

var m = _parseSelector.Match("tag.class1.class2#id[attr1=val1][attr2=\"val2\"][attr3]:pseudo");

现在有办法做一些类似于m.Group["attr"]["name"]的事情吗?或者以某种方式让小组进入attr小组?

1 个答案:

答案 0 :(得分:5)

组名不嵌套在正则表达式中 - 它是一个扁平结构。你可以使用它:

m.Group["name"]