我已經繼承了一個包含以下正則表達式的代碼塊,並且我試圖瞭解它是如何得到它的結果的。C#中的正則表達式組
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?
從我瞭解的羣體集合存儲在整場比賽以及之前的比賽看this question。但是,上面的正則表達式不僅僅匹配[方括號] [文本] [方括號],爲什麼「jsmith」匹配?
另外,它總是這樣的情況下,集合將存儲完全2組:整個比賽和最後一場比賽?
如果你不想捕獲組使用'非捕獲groups'。 '(?:正則表達式)'。正則表達式參考:http://www.regular-expressions.info/refadv.html – BrunoLM 2011-06-16 17:19:31
正確BrunoLM ::如果你需要邏輯組,但不希望它被捕獲。 – zellio 2011-06-16 17:20:20