<tr class=thead><td>109.74.51.211</td><td><img border=0 src=/picit.php?q=BQN%253Q></td><td>High Anonymous</td><td>-</td><td>-</td><td>-</td><td>00:02:32</td></tr>
<tr ><td>190.204.178.189</td><td><img border=0 src=/picit.php?q=BQN4ZN%253Q%253Q></td><td>High Anonymous</td><td>-</td><td>-</td><td>-</td><td>00:03:34</td></tr>
<tr class=thead><td>190.206.106.82</td><td><img border=0 src=/picit.php?q=BQN4ZN%253Q%253Q></td><td>High Anonymous</td><td>-</td><td>-</td><td>-</td><td>00:03:34</td></tr>
<tr ><td>41.217.164.78</td><td><img border=0 src=/picit.php?q=BQN4ZN%253Q%253Q></td><td>High Anonymous</td><td>-</td><td>-</td><td>-</td><td>00:04:35</td></tr>
<tr class=thead><td>91.99.224.106</td><td><img border=0 src=/picit.php?q=BQN%253Q></td><td>High Anonymous</td><td><img border=0 src=/images/country_icons/ir.gif>&nbsp;IRAN, ISLAMIC REPUBLIC OF</td><td>-</td><td>-</td><td>00:04:35</td></tr>
<tr ><td>186.207.138.4</td><td><img border=0 src=/picit.php?q=BQN4ZN%253Q%253Q></td><td>High Anonymous</td><td>-</td><td>-</td><td>-</td><td>00:05:38</td></tr>
<tr class=thead><td>212.45.12.10</td><td><img border=0 src=/picit.php?q=ZmRlBN%253Q%253Q></td><td>High Anonymous</td><td><img border=0 src=/images/country_icons/ru.gif>&nbsp;RUSSIAN FEDERATION</td><td>MOSKVA</td><td>MOSCOW</td><td>00:05:38</td></tr>
如何写正则表达式提取上面内容中蓝色的字段, 就是提取所有包含红色字段的行里的蓝色字段。
本人菜鸟,试了很久还是得不到结果,望高手来。

解决方案 »

  1.   


                string str = @"<tr class=thead><td>109.74.51.211</td><td><img border=0 src=/picit.php?q=BQN%253Q></td><td>High Anonymous</td><td>-</td><td>-</td><td>-</td><td>00:02:32</td></tr>
    <tr ><td>190.204.178.189</td><td><img border=0 src=/picit.php?q=BQN4ZN%253Q%253Q></td><td>High Anonymous</td><td>-</td><td>-</td><td>-</td><td>00:03:34</td></tr>
    <tr class=thead><td>190.206.106.82</td><td><img border=0 src=/picit.php?q=BQN4ZN%253Q%253Q></td><td>High Anonymous</td><td>-</td><td>-</td><td>-</td><td>00:03:34</td></tr>
    <tr ><td>41.217.164.78</td><td><img border=0 src=/picit.php?q=BQN4ZN%253Q%253Q></td><td>High Anonymous</td><td>-</td><td>-</td><td>-</td><td>00:04:35</td></tr>
    <tr class=thead><td>91.99.224.106</td><td><img border=0 src=/picit.php?q=BQN%253Q></td><td>High Anonymous</td><td><img border=0 src=/images/country_icons/ir.gif>&nbsp;IRAN, ISLAMIC REPUBLIC OF</td><td>-</td><td>-</td><td>00:04:35</td></tr>
    <tr ><td>186.207.138.4</td><td><img border=0 src=/picit.php?q=BQN4ZN%253Q%253Q></td><td>High Anonymous</td><td>-</td><td>-</td><td>-</td><td>00:05:38</td></tr>
    <tr class=thead><td>212.45.12.10</td><td><img border=0 src=/picit.php?q=ZmRlBN%253Q%253Q></td><td>High Anonymous</td><td><img border=0 src=/images/country_icons/ru.gif>&nbsp;RUSSIAN FEDERATION</td><td>MOSKVA</td><td>MOSCOW</td><td>00:05:38</td></tr>";
                Regex reg = new Regex(@"(?is)<tr[^>]*?><td>([^>]+)</td><td><img[^>]*?src=(['""\s]?)[^=]+=BQN4ZN%253Q%253Q\2[^>]*?></td>.*?</tr>");
                foreach (Match m in reg.Matches(str))
                    Console.WriteLine(m.Groups[1].Value);
    /*
    190.204.178.189
    190.206.106.82
    41.217.164.78
    186.207.138.4*/
      

  2.   


                System.IO.StreamReader reader = new System.IO.StreamReader("e:\\1.txt");
                string s = reader.ReadToEnd();
                System.Text.RegularExpressions.Regex reg = new System.Text.RegularExpressions.Regex(@"(?is)(?<=<tr[^>]*?><td>)[^>]+(?=</td><td><img[^>]*?=BQN4ZN%253Q%253Q></td>.*?</tr>)");
                System.Text.RegularExpressions.MatchCollection ms = reg.Matches(s);
                foreach (System.Text.RegularExpressions.Match m in ms)
                {
                    MessageBox.Show(m.Value);
                }