我有这个正则表达式来捕获类型名称 - 首先是类型名称,然后是通用参数列表,最后是程序集名称:
(.*?)\[\[(.*?)\]\], (.*)
当我针对这样的字符串运行它时(类型的完全限定名称的简化版本):
System.Collections.Generic.List`1[[FrEee.Modding.Formula`1[[System.String, mscorlib]], FrEee.Core]], mscorlib
我在整个字符串上只得到一个匹配:
为什么我定义的三个捕获组与字符串的各个部分不匹配?
我正在使用此代码来访问捕获:
match.Captures[1].Value
当我应该使用时:
match.Groups[1].Captures[0].Value
此外,看起来你应该make the parameter wildcard greedy,以便它不会在内部括号上绊倒:
(?<type>.*?)\[\[(?<parameters>.*)\]\], (?<assembly>.*)