如何用正则表达式中的其他字符替换

时间:2018-08-07 04:10:36

标签: html regex

我正在尝试抓取一些包含代理列表的网页 并设法报废了代理和港口 但我停留在替换代理和端口之间的表边界 用“:”代替 这是我的正则表达式代码

(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})(?:\s+|\s*<\/td><td>\s*)(\d{2,5})

这是html中的抓取页面

<tr><td>35.199.100.7</td><td>8080</td><td>US</td><td class='hm'>United States</td><td>elite proxy</td><td class='hm'>no</td><td class='hx'>yes</td><td class='hm'>1 second ago</td></tr><tr><td>163.172.181.29</td><td>80</td><td>FR</td><td class='hm'>France</td><td>elite proxy</td><td class='hm'>no</td><td class='hx'>no</td><td class='hm'>1 second ago</td></tr><tr><td>178.213.144.238</td><td>41258</td><td>RU</td><td class='hm'>Russian Federation</td><td>elite proxy</td><td class='hm'>no</td><td class='hx'>yes</td><td class='hm'>1 second ago</td></tr><tr><td>142.93.79.212</td><td>3128</td><td>CA</td><td class='hm'>Canada</td><td>anonymous</td><td class='hm'>no</td><td class='hx'>no</td><td class='hm'>1 second ago</td></tr><tr>

这是我的测试页 https://www.phpliveregex.com/p/oPW 有人可以帮我吗 谢谢

1 个答案:

答案 0 :(得分:0)

尝试以下操作:\d+(?:\.\d+){3}\K<\/td><td>(?=\d+)并替换为:

Demo

您的数据似乎是网页的一部分,或者是“经过预过滤”的网页。在那种情况下,使用正则表达式没有错,因为输入数据很简单。

但是,问题是,您如何获得这些数据?可能与其他几个正则表达式。正如乔治(Jorge)在评论中所说的那样,这可能会出错。

除非这是一个一次性脚本,否则您真的应该考虑使用某些HTML解析器重写整个内容。