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

问题描述 投票:0回答:2

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

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

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

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

我在整个字符串上只得到一个匹配:

link

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

c# .net regex
2个回答
1
投票

我正在使用此代码来访问捕获:

match.Captures[1].Value

当我应该使用时:

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

1
投票

此外,看起来你应该make the parameter wildcard greedy,以便它不会在内部括号上绊倒:

(?<type>.*?)\[\[(?<parameters>.*)\]\], (?<assembly>.*)
© www.soinside.com 2019 - 2024. All rights reserved.