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

ここは私の正規表現です。私はそれをマッチさせたいが、私はちょうど私がC#は私に正しいことを返すことができますどのようにC#正規表現の問題

"1" 

を取得したいのですがときにC#は私に

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

のようなものを返しますか?

答えて

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は、一致した文字列全体を返します。

具体的には、コレクションが1つまたは複数の System.Text.RegularExpressions.Group オブジェクトが含まれていMSDN

を参照してください。一致が成功すると、 コレクションの最初の要素 には、 が一致するGroupオブジェクトが含まれています。 正規表現にキャプチャグループが含まれている場合、各 後の要素は、 キャプチャされたグループを表します。マッチが失敗した場合 は、 コレクションは、その成功のプロパティ 偽で、値がプロパティ String.Emptyのに等しい単一 System.Text.RegularExpressions.Group オブジェクトが含まれています。