2011-07-10 57 views
0
"<div class=\"standings-rank\">([0-9]{1,2})</div>" 

這是我的正則表達式。我想匹配,但C#返回我像C#正則表達式問題

"<div class=\"standings-rank\">1</div>" 

當我想只得到

"1" 

我怎樣才能讓C#返回我對了嗎?

回答

3

使用Match.Groups[int]索引器。

Regex regex = new Regex("<div class=\"standings-rank\">([0-9]{1,2})</div>"); 
string str = "<div class=\"standings-rank\">1</div>"; 
string value = regex.Match(str).Groups[1].Value; 

Console.WriteLine(value); // Writes "1" 
+0

優秀的答案! – SBSTP

2

假設你有一個正則表達式聲明如下:

Regex pattern = new Regex("<div class=\"standings-rank\">([0-9]{1,2})</div>"); 

並經由Match方法測試所述正則表達式;那麼您必須訪問從索引1開始而不是索引0的匹配;

pattern.Match("<div class=\"standings-rank\">1</div>").Groups[1].Value 

這將返回預期值;索引0將返回整個匹配的字符串。

具體而言,請參閱MSDN

集合包含一個或多個 System.Text.RegularExpressions.Group 對象。如果匹配成功, 集合 中的第一個元素包含 對應於整個匹配的組對象。如果常規的 表達式包括捕獲組,則每個 後續元素表示一個捕獲組。 如果匹配不成功, 集合包含一個 System.Text.RegularExpressions.Group 對象,其Success屬性是假 ,其價值屬性等於 的String.Empty。