当前位置:编程学习 > C#/ASP.NET >>

帮忙写个获取IP地址的正则表达式,谢谢

<TD align=middle bordercolordark="#000000" width="113" height="14"><div id=ip0><A title="点击复制此IP地址" onClick="copycode(findobj('ip0'));"><font color=black>200.30.101.20</font></a></div></TD>
    <TD align=middle bordercolordark="#000000" width="56" height="14"><div id=port0><A title="点击复制此端口" onClick="copycode2(findobj('port0'));"><font color=black>8080</font></a></div></TD>
    <TD align=middle bordercolordark="#000000" width="60" height="14">正常</TD>
    <TD align=middle bordercolordark="#000000" width="62" height="14">4608</TD>

需要得到的是:200.30.101.20:8080 --------------------编程问答--------------------
@"(?s)'ip0'.*?(?<ip0>[\d.]+).*?'port0'.*?(?<port0>\d+)"
--------------------编程问答--------------------
using System;
using System.Text.RegularExpressions;

class Program
{
  static void Main()
  {
    string s = @"<TD align=middle bordercolordark=""#000000"" width=""113"" height=""14""> <div id=ip0> <A title=""点击复制此IP地址"" onClick=""copycode(findobj('ip0'));""> <font color=black>200.30.101.20 </font> </a> </div> </TD> 
<TD align=middle bordercolordark=""#000000"" width=""56"" height=""14""> <div id=port0> <A title=""点击复制此端口"" onClick=""copycode2(findobj('port0'));""> <font color=black>8080 </font> </a> </div> </TD> 
<TD align=middle bordercolordark=""#000000"" width=""60"" height=""14"">正常 </TD> 
<TD align=middle bordercolordark=""#000000"" width=""62"" height=""14"">4608 </TD>";
    Match m = Regex.Match(s, @"(?s)'ip0'.*?(?<ip0>[\d.]+).*?'port0'.*?(?<port0>\d+)");
    if (m.Success)
    {
      Console.WriteLine("{0}:{1}", m.Groups["ip0"], m.Groups["port0"]);
      // 这就是你要的:200.30.101.20:8080
    }
  }
}
--------------------编程问答-------------------- mark --------------------编程问答--------------------
using System;
using System.Text.RegularExpressions;

class Program
{
  static void Main()
  {
    string s = @"<TD align=middle bordercolordark=""#000000"" width=""113"" height=""14""> <div id=ip0> <A title=""点击复制此IP地址"" onClick=""copycode(findobj('ip0'));""> <font color=black>200.30.101.20 </font> </a> </div> </TD> 
<TD align=middle bordercolordark=""#000000"" width=""56"" height=""14""> <div id=port0> <A title=""点击复制此端口"" onClick=""copycode2(findobj('port0'));""> <font color=black>8080 </font> </a> </div> </TD> 
<TD align=middle bordercolordark=""#000000"" width=""60"" height=""14"">正常 </TD> 
<TD align=middle bordercolordark=""#000000"" width=""62"" height=""14"">4608 </TD>";

    Regex  r = new Regex(@"(?s).*?'ip0'.*?([\d.]+).*?'port0'.*?(\d+).*");
    string t = r.Replace(s, "$1:$2"); // <---- 这就是你要的:200.30.101.20:8080
    Console.WriteLine(t);
  }
}
--------------------编程问答-------------------- <TD align=middle bordercolordark="#000000" width="113" height="14"><div id=ip0><A title="点击复制此IP地址" onClick="copycode(findobj('ip0'));"><font color=black>200.30.101.20</font></a></div></TD>
    <TD align=middle bordercolordark="#000000" width="56" height="14"><div id=port0><A title="点击复制此端口" onClick="copycode2(findobj('port0'));"><font color=black>8080</font></a></div></TD>
    <TD align=middle bordercolordark="#000000" width="60" height="14">正常</TD>
    <TD align=middle bordercolordark="#000000" width="62" height="14">4608</TD>
<TD align=middle bordercolordark="#000000" width="113" height="14"><div id=ip1><A title="点击复制此IP地址" onClick="copycode(findobj('ip1'));"><font color=black>200.30.101.8</font></a></div></TD>
    <TD align=middle bordercolordark="#000000" width="56" height="14"><div id=port1><A title="点击复制此端口" onClick="copycode2(findobj('port1'));"><font color=black>1231</font></a></div></TD>
    <TD align=middle bordercolordark="#000000" width="60" height="14">优质</TD>
    <TD align=middle bordercolordark="#000000" width="62" height="14">3842</TD>
    <TD align=middle bordercolordark="#000000" width="57" height="14">http</TD>
...........

需要得到里面的:
200.30.101.20:8080
200.30.101.8:1231
... --------------------编程问答--------------------

string strContent = "<TD align=middle bordercolordark=\"#000000\" width=\"113\" height=\"14\"> <div id=ip0> <A title=\"点击复制此IP地址\" onClick=\"copycode(findobj('ip0'));\"> <font color=black>200.30.101.20 </font> </a> </div> </TD> "+
    "<TD align=middle bordercolordark=\"#000000\" width=\"56\" height=\"14\"> <div id=port0> <A title=\"点击复制此端口\" onClick=\"copycode2(findobj('port0'));\"> <font color=black>8080 </font> </a> </div> </TD> "+
    "<TD align=middle bordercolordark=\"#000000\" width=\"60\" height=\"14\">正常 </TD> "+
    "<TD align=middle bordercolordark=\"#000000\" width=\"62\" height=\"14\">4608 </TD> "+
"<TD align=middle bordercolordark=\"#000000\" width=\"113\" height=\"14\"> <div id=ip1> <A title=\"点击复制此IP地址\" onClick=\"copycode(findobj('ip1'));\"> <font color=black>200.30.101.8 </font> </a> </div> </TD> "+
   " <TD align=middle bordercolordark=\"#000000\" width=\"56\" height=\"14\"> <div id=port1> <A title=\"点击复制此端口\" onClick=\"copycode2(findobj('port1'));\"> <font color=black>1231 </font> </a> </div> </TD> "+
    "<TD align=middle bordercolordark=\"#000000\" width=\"60\" height=\"14\">优质 </TD> "+
    "<TD align=middle bordercolordark=\"#000000\" width=\"62\" height=\"14\">3842 </TD> "+
    "<TD align=middle bordercolordark=\"#000000\" width=\"57\" height=\"14\">http </TD> ";

                Regex re = new Regex(@"(?si)ip(\d+).*?(?:<font[^>]*>)(?<ip>.*?(?=</font>)).*?(port\1).*?(?:<font[^>]*>)(?<port>.*?(?=</font>))");
                List<string> iplist = new List<string>();
                foreach (Match m in re.Matches(strContent))
                {
                    iplist.Add(m.Groups["ip"].Value.Trim() + ":" + m.Groups["port"].Value.Trim());
                }


iplist为结果 --------------------编程问答--------------------
using System;
using System.Text.RegularExpressions;

class Program
{
  static void Main()
  {
    string s = @"<TD align=middle bordercolordark=""#000000"" width=""113"" height=""14""> <div id=ip0> <A title=""点击复制此IP地址"" onClick=""copycode(findobj('ip0'));""> <font color=black>200.30.101.20 </font> </a> </div> </TD> 
    <TD align=middle bordercolordark=""#000000"" width=""56"" height=""14""> <div id=port0> <A title=""点击复制此端口"" onClick=""copycode2(findobj('port0'));""> <font color=black>8080 </font> </a> </div> </TD> 
    <TD align=middle bordercolordark=""#000000"" width=""60"" height=""14"">正常 </TD> 
    <TD align=middle bordercolordark=""#000000"" width=""62"" height=""14"">4608 </TD> 
<TD align=middle bordercolordark=""#000000"" width=""113"" height=""14""> <div id=ip1> <A title=""点击复制此IP地址"" onClick=""copycode(findobj('ip1'));""> <font color=black>200.30.101.8 </font> </a> </div> </TD> 
    <TD align=middle bordercolordark=""#000000"" width=""56"" height=""14""> <div id=port1> <A title=""点击复制此端口"" onClick=""copycode2(findobj('port1'));""> <font color=black>1231 </font> </a> </div> </TD> 
    <TD align=middle bordercolordark=""#000000"" width=""60"" height=""14"">优质 </TD> 
    <TD align=middle bordercolordark=""#000000"" width=""62"" height=""14"">3842 </TD> 
    <TD align=middle bordercolordark=""#000000"" width=""57"" height=""14"">http </TD>";

    Regex r1 = new Regex(@"(?s).*?'ip\d+'.*?([\d.]+).*?'port\d+'.*?(\d+)");
    Regex r2 = new Regex(@"(?s)([\d.:|]+).*");

    string[] t = r2.Replace(r1.Replace(s, "$1:$2|"), "$1").Trim('|').Split('|');
    // 这个字符串数组 t 就是你要的!

    foreach (string ip in t)
      Console.WriteLine(ip);
  }
}
--------------------编程问答--------------------
using System;
using System.Text.RegularExpressions;

class Program
{
  static void Main()
  {
    string s = @"<TD align=middle bordercolordark=""#000000"" width=""113"" height=""14""> <div id=ip0> <A title=""点击复制此IP地址"" onClick=""copycode(findobj('ip0'));""> <font color=black>200.30.101.20 </font> </a> </div> </TD> 
    <TD align=middle bordercolordark=""#000000"" width=""56"" height=""14""> <div id=port0> <A title=""点击复制此端口"" onClick=""copycode2(findobj('port0'));""> <font color=black>8080 </font> </a> </div> </TD> 
    <TD align=middle bordercolordark=""#000000"" width=""60"" height=""14"">正常 </TD> 
    <TD align=middle bordercolordark=""#000000"" width=""62"" height=""14"">4608 </TD> 
<TD align=middle bordercolordark=""#000000"" width=""113"" height=""14""> <div id=ip1> <A title=""点击复制此IP地址"" onClick=""copycode(findobj('ip1'));""> <font color=black>200.30.101.8 </font> </a> </div> </TD> 
    <TD align=middle bordercolordark=""#000000"" width=""56"" height=""14""> <div id=port1> <A title=""点击复制此端口"" onClick=""copycode2(findobj('port1'));""> <font color=black>1231 </font> </a> </div> </TD> 
    <TD align=middle bordercolordark=""#000000"" width=""60"" height=""14"">优质 </TD> 
    <TD align=middle bordercolordark=""#000000"" width=""62"" height=""14"">3842 </TD> 
    <TD align=middle bordercolordark=""#000000"" width=""57"" height=""14"">http </TD>";

    Regex r1 = new Regex(@"(?s).*?'ip\d+'.*?([\d.]+).*?'port\d+'.*?(\d+)");
    Regex r2 = new Regex(@"(?s)([\d.:|]+).*");

    string t = r2.Replace(r1.Replace(s, "$1:$2|"), "$1").Replace("|", "\r\n");
    // 如果你想得到一个多行的字符串,每行一个IP,那就这样做!

    Console.WriteLine(t);
    /* 输出:
    200.30.101.20:8080
    200.30.101.8:1231
    */
  }
}
--------------------编程问答-------------------- ^((1?\\d?\\d|(2([0-4]\\d|5[0-5])))\\.){3}(1?\\d?\\d|(2([0-4]\\d|5[0-5])))$ --------------------编程问答-------------------- LZ 的 ID 怎么和 Ivony 如此相像? --------------------编程问答-------------------- --------------------编程问答-------------------- up
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,