C# 正则表达式 : Get sub-capture?

标签 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 组?

最佳答案

组名没有嵌套在正则表达式中——它是一个平面结构。你可以只使用这个:

m.Group["name"]

关于C# 正则表达式 : Get sub-capture?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3851349/

相关文章:

regex - egrep 字符串大小写

javascript - 正则表达式可选捕获未按预期工作

C#:带有数字和中间斜线的正则表达式

c# - 将 double 格式化为纬度/经度人类可读格式

javascript - 将 Google Analytics UTM 跟踪添加到 Google 表格中的单元格

php - str_replace 或 preg_replace 只替换最后一个匹配项?

正则表达式提取带有匹配单词的句子,不停止在 "Mr."、 "Mrs."等处

c# - 字符串在特定位置替换在 c# 中

c# - 计时器、UI 框架和不良耦合——有什么想法吗?

c# - 如何首先在 Entity Framework 代码中为每种类型配置多个对象集