我想使用C#regex从字符串中提取代理地址(主机和端口) 字符串如下所示:
<span class="tbBottomLine" style="width:140px;">
208.31.251.38
</span>
<span class="tbBottomLine" style="width:50px;">
80
</span>
或者
<tr class="odd">
<td>115.29.247.115</td>
<td>8888</td></tr>
答案 0 :(得分:0)
编写正则表达式是不可能的,它会从任何标记中捕获代理信息。例如,一些网站可以&#34;烘烤&#34;将端口号放入图片中,因此您必须单独处理每种标记。
通常, html不能也不应该使用RegEx解析。
无论如何,这是一个可以处理你们两个输入字符串
的例子WebProxy[] ProxyArray = Regex.Matches(input, @"(?<ip>\d*\.\d*\.\d*\.\d*).*?>\s*(?<port>\d+)\s*<")
.Cast<Match>().Select(m => new WebProxy(m.Groups["ip"].Value + ":" + m.Groups["port"].Value)).ToArray();
请记住,页面的整个代码都可以包含会破坏此RegEx的元素。
您可能想看看Html Agility Pack。