我有一个包含多个IP的流阅读器,位于其中。我想自动从流和端口中提取所有IP。
基本上它来自get请求的响应,所有ips和端口都表示如下:
<th>xx.xx.xx.xx</th>
<th>port</th>
我已经有一个正则表达式来获取ip。基本上我想要做的是找到每个匹配,获取匹配,向前移动"</th><th>".Length
个字节,然后检索端口,并将其作为IPAddress对象插入列表。
问题是当正则表达式需要检索多个结果时,如何做到这一点。
答案 0 :(得分:1)
冒着召唤各种犯规生物的风险(我不是主要指SO用户),这里有一个小单元测试:
[TestMethod]
public void RegexTest()
{
var input = "<th>192.168.1.1</th>\r<th>443</th>";
var regex = @"(?s)<th>([0-9\.]*?)</th>.*?<th>([0-9]*?)</th>";
var matches = Regex.Matches(input, regex);
foreach (Match match in matches)
Console.WriteLine("IP: {0}, port: {1}", match.Groups[1].Value, match.Groups[2].Value);
}
问题是,这是您通常应该避免使用正则表达式来解析HTML的原因之一,输入的确切格式变得非常重要。例如,如果您在输入中输入<th> 443</th>
,则上述测试会中断。
现在去拿你的赌注和你的银子弹,他们来找我们!!