2012-08-27 77 views
0

我試圖只顯示捕獲的正則表達式組(被()包圍的那些組),但無論我嘗試過它顯示捕獲的和匹配的。僅顯示捕獲的組

我在尋找的是隻顯示捕獲組的解決方案。

這是一個示例代碼示出兩組如上所述:

RegexOptions ignoreSpace = checkEditIgnoreSpaces.Checked ? RegexOptions.IgnorePatternWhitespace : RegexOptions.None; 
RegexOptions ignorecase = checkEditIgnoreCase.Checked ? RegexOptions.IgnoreCase : RegexOptions.None; 
RegexOptions multiline = checkEditMultiline.Checked ? RegexOptions.Multiline : RegexOptions.Singleline; 
RegexOptions ignoreUnnamedGroups = checkEditCaptureUnnamedGroups.Checked ? RegexOptions.None : RegexOptions.ExplicitCapture; 

MatchCollection mc = Regex.Matches(myRichTextBox1.Text, pattern, ignorecase | ignoreSpace | multiline | ignoreUnnamedGroups); 

if (mc.Count > 0) 
{ 
    foreach (Match match in mc) 
    { 
     Console.WriteLine(match.Value); 
    } 
} 

我希望match.Captures將只包含所拍攝的基團由並非如此。

+0

僅供參考,'Multiline'和'Singleline'選擇不是相互排斥的,因爲你似乎認爲。他們甚至沒有連接。 'Multiline'改變錨點的行爲('^'和'$'),'Singleline'改變點的行爲('.')。這些名字很混亂,它們提到的匹配模式從來都不應該存在,但我們一直堅持着它們。 –

回答

1

試試這個

match.Groups[1].Value; 

Source

+0

很好,謝謝。無法加載鏈接(isp問題)。第二組(組[1])是否僅包含捕獲和第一個([0])匹配? – denied66

+0

在我的理解組中只包含組... MatchCollection就是你要找的。從msdn:* MatchCollection表示通過迭代地將正則表達式模式應用於輸入字符串找到的成功匹配集* – Gabber