2016-05-11 5 views
1

私の正規表現の入力は以下のようになります。1つ抽出するには、

xyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyz 
xyzxyzxyzxyzxyzxyzxyzxyzxyzDays</td> <td>15/td>xyzxyzxyzxyzxyzxyzxyzxyzxyz 
xyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyz 
xyzxyzxyzxyzxyzxyzxyzxyzxyz 
xyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyz 
xyzxyzxyzDays</td> <td>25/td>xyzxyzxyzxyzxyzxyz 
xyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyz 
xyzxyzxyzxyzxyzxyz 
xyzxyzxyz 
xyzxyzxyzxyzxyzxyzxyzxyzxyz 
xyzxyzxyzxyzxyzxyzDays</td> <td>8/td>xyzxyzxyzxyzxyzxyzxyzxyzxyz 
xyzxyzxyzxyzxyzxyz 
xyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyz 
xyzxyzxyzxyzxyzxyzxyzxyzxyz 

xyzxyzxyz - htmlコードのthats。

最初に後ろにある数字を抽出したいDaysが表示されます。したがって、15になります。私はウェブサイトからそれを掻き集めて、その数が変化している。

私はそのコードの管理:

MatchCollection m1 = Regex.Matches(sourceCode, @"Days</td> <td>(\d+)", RegexOptions.Singleline); 
    List<string> adresy = new List<string>(); 

    foreach (Match m in m1) 
    { 
     string adres = m.Groups[1].Value; 
     adresy.Add(adres); 
     label1.Text = adres; 
    } 

をしかし、それは私に158 instedを与えます。あなたはなにか考えはありますか?

+0

私は、あなたの入力の任意の場所に句「ユニークビジター」を参照してくださいしないでください。あなたの*完全な入力を表示するか、少なくとも関連するすべての入力を表示して、あなたが望むパターンと一致させようとしているものをより正確に説明してください。 –

+0

申し訳ありません、私は間違いを犯しました。 – audiophonic

+0

Regex.Matchesの代わりにRegex.Matchを試してください。 –

答えて

2

foreachの反復ごとにラベルテキストを更新することが重要です。アドレスを収集した後にのみ更新する必要があります。あなたの全体のforeach

adresy = m1.Cast<Match>().Select(p => p.Groups[1].Value).ToList(); 
label1.Text = adresy.Count > 0 ? adresy[0] : string.Empty; 

ではIDEONE demoを参照してください置き換え:あなたは私たちにすべてを表示されないよう

var sourceCode = "xyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyz\nxyzxyzxyzxyzxyzxyzxyzxyzxyzDays</td> <td>15/td>xyzxyzxyzxyzxyzxyzxyzxyzxyz\nxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyz\nxyzxyzxyzxyzxyzxyzxyzxyzxyz\nxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyz\nxyzxyzxyzDays</td> <td>25/td>xyzxyzxyzxyzxyzxyz\nxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyz\nxyzxyzxyzxyzxyzxyz\nxyzxyzxyz\nxyzxyzxyzxyzxyzxyzxyzxyzxyz\nxyzxyzxyzxyzxyzxyzDays</td> <td>8/td>xyzxyzxyzxyzxyzxyzxyzxyzxyz\nxyzxyzxyzxyzxyzxyz\nxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyz\nxyzxyzxyzxyzxyzxyzxyzxyzxyz"; 
var adresy = Regex.Matches(sourceCode, @"Days</td> <td>(\d+)") 
      .Cast<Match>() 
      .Select(p => p.Groups[1].Value) 
      .ToList(); 
var labelText = adresy.Count > 0 ? adresy[0] : string.Empty; 
Console.WriteLine(labelText); 
関連する問題