2012-05-17 24 views
-2

我正在使用(。)匹配所有字符,但它也返回太多匹配。我如何製作它只有1場比賽?正則表達式返回所有字符

private MatchCollection RegexMatchingV2(string data, string regex) 
    { 
     MatchCollection col = null; 
     try 
     { 
      col = Regex.Matches(data, regex, RegexOptions.IgnoreCase); 
     } 
     catch (Exception ex) 
     { 
      Response.Write("RegexMatching ERROR:" + ex.Message); 
     } 
     return col; 
    } 

    protected void Page_Load(object sender, EventArgs e) 
    { 
     MatchCollection col= RegexMatchingV2("return all of this data in 1 match", "(.)"); 
     Response.Write(col.Count);//Too much matches 
    } 
+3

你的目標是什麼?不加區別地匹配整個字符串是毫無意義的操作。 – Douglas

+0

只是懶得寫很多條件語句 –

+0

什麼條件語句?如何在「MatchCollection」中將整個字符串作爲單個「匹配」獲取幫助? – Douglas

回答

7

爲了使單個匹配使用(.*)

.單個字符相匹配。額外的*表示「零個或多個」。

編輯迴應關於兩個匹配的評論(第一個匹配包含字符串,第二個匹配空白匹配):Matches documentation表示它給出空匹配的特殊處理。在該頁面上有一個很好的例子來顯示行爲。但最終的結果是在比賽結束後,它不會向前移動,所以它會選出一個空的比賽。爲防止出現這種情況,您可以使用行首和行尾錨點:(^.*$)或使用+強制至少包含一個字符:(.+)

+0

實際上這返回了2個匹配 –

+0

@ James007:好問題 - 我試圖在編輯中回答它。 –

+0

+1關於空白匹配的解釋。 – Douglas

1

由於您希望匹配任意數量的任何字符,請將.更改爲.*以匹配零個或多個字符,或.+以匹配一個或多個字符。

+0

F.J。+確實有效 –

相關問題