2012-07-11 23 views
0

我有以下正则表达式来匹配Ip:端口形式的HTML代码,但一些原因我只得到返回的第一个匹配,然后停止。正则表达式来匹配Ip:端口

我的代码:

 Match m = Regex.Match(_theHtmlCode, @"\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\:\d{1,8}\b", RegexOptions.IgnoreCase); 

     if (m.Success) 
     { 
      if(m.Groups[0].Value != "") 
      { 
       resultsFound.Add(m.Groups[0].Value); 
      } 

     } 

任何想法如何,我可以得到它的所有比赛加入到resultsFound?

回答

0

您需要使用Regex.Matches方法而不是Regex.Match方法。这会返回MatchCollection而不是个人Match,集合包含正则表达式的所有匹配项。

+0

喔,怎么会有我的修改后的代码的外观与替代的比赛吗?当我切换到匹配和匹配集合时在这里和那里得到错误 – alexy12 2012-07-11 12:56:03

+0

获取'MatchCollection'并用'foreach(匹配中的var m)'迭代它。在外观里面,保留你的'if(m.Success)'块。 – 2012-07-11 13:00:43

+0

这是Alexy的工作吗? – 2012-07-11 13:48:25

1

var m = Regex.Matches(_theHtmlCode, @"\b(\d{1,3}\.){3}\d{1,3}\:\d{1,8}\b", RegexOptions.IgnoreCase); 和这个表达式可以得到错误的IP,这仅匹配真实IP:((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?):\d+