我想使用C#正则表达式从字符串中提取代理地址(主机和端口)
字符串如下:
<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>
不可能编写正则表达式,它将从任何标记中捕获代理信息。例如,一些网站可以将端口号"烘焙"到图片中,因此您必须单独处理每种标记。
通常,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敏捷包。