C#正则表达式仅捕获整个表达式,而不捕获单个捕获组

时间:2018-09-12 15:08:49

标签: c# .net regex

我有这个正则表达式来捕获类型名称-首先是类型名称,然后是通用参数列表,最后是程序集名称:

(.*?)\[\[(.*?)\]\], (.*)

当我针对这样的字符串(类型的完全限定名称的简化版本)运行它时:

System.Collections.Generic.List`1[[FrEee.Modding.Formula`1[[System.String, mscorlib]], FrEee.Core]], mscorlib

在整个字符串上我只有一个匹配项:

link

为什么我定义的三个捕获组与字符串的各个部分都不匹配?

2 个答案:

答案 0 :(得分:1)

我正在使用以下代码访问捕获内容:

match.Captures[1].Value

我应该使用的时间:

match.Groups[1].Captures[0].Value

答案 1 :(得分:1)

另外,您似乎应该make the parameter wildcard greedy,以免它跳到内括号上:

(?<type>.*?)\[\[(?<parameters>.*)\]\], (?<assembly>.*)