我继承了一个包含以下正则表达式的代码块,我试图理解它是如何得到结果的。
var pattern = @"\[(.*?)\]";
var matches = Regex.Matches(user, pattern);
if (matches.Count > 0 && matches[0].Groups.Count > 1)
...
输入 user == "Josh Smith [jsmith]"
:
matches.Count == 1
matches[0].Value == "[jsmith]"
我能理解,但是:
matches[0].Groups.Count == 2
matches[0].Groups[0].Value == "[jsmith]"
matches[0].Groups[1].Value == "jsmith" <=== how?
根据我的理解,看看 这个问题,Group 集合存储了整个匹配以及上一个匹配。但是,上面的 regexp 不是只匹配[开方括号][文本][关方括号]吗? 那么为什么“ jsmith”会匹配呢?
另外,group 集合是否总是只存储2个组: 整个匹配和最后一个匹配?