我正在使用Regex.Matches()解析來自大型文本文件的一串匹配。是否從C#的Regex.Matches返回的數組的順序保證按照文本的順序?
該函數是否有任何文檔保證Matches數組中的第一項將與文本中的第一個匹配對應,Matches數組中的第二個項與文本中的第二個匹配項相對應?
它似乎是基於Regex.Match的文檔嚴重隱含的,但我無法找到證明Regex.Matches將始終按文本中找到的順序返回匹配。
編輯
我發現一個整潔的網站,讓你去通過.NET源代碼。
我們看到的比賽返回一個新MatchCollection,因爲它的使用,直到其推遲執行不執行任何操作。
我們看到,對於MatchCollection主要數據結構是一個ArrayList,它不保證秩序。
_regex = regex;
_input = input;
_beginning = beginning;
_length = length;
_startat = startat;
_prevlen = -1;
#if SILVERLIGHT
_matches = new List<Match>();
#else
_matches = new ArrayList();
#endif
_done = false;
而且該GetMatch函數運行在文本中的順序正則表達式,將每一場比賽,因爲它沿到主數組列表去。
Match match;
do {
match = _regex.Run(false, _prevlen, _input, _beginning, _length, _startat);
if (!match.Success) {
_done = true;
return null;
}
_matches.Add(match);
這對於我來說已經足夠了。
*總是在左到右線性方式處理* RegexOptions.RightToLeft'然後做了什麼? – PetSerAl
@PetSerAl足夠:) –
你的解決方案是聰明的,我可以自己訂購它。謝謝! – tt9