模式匹配http响应帮助

时间:2014-04-29 15:44:29

标签: perl

我从http get获得了以下内容。我不明白为什么我的模式匹配不能捕获IP地址。

                                    <div style="text-align:center;font-  size:26px;padding-top:0px;color:#000;">Your IP Address Is:</div>
                                    <div style="text-align:center;font-size:26px;padding-top:10px;font-weight:bold;color:#007cc3;">
<!-- do not script -->
144.160.5.25
<!-- do not script -->

我的模式匹配是

$res->content =~ /Your IP Address Is:.*((?:\d{1,3}\.){3}\d{1,3})/) {

如果我这样做,那么它确实找到了它。

$res->content =~ /Your IP Address Is:\S+\s+\S+\s+\S+\s+\S+\s+\S+\s+\S+\s+\S+\s\S+\s+((?:\d{1,3}\.){3}\d{1,3})/) {

1 个答案:

答案 0 :(得分:3)

您的问题在于,除非您使用.开关,否则/s不会与返回字符匹配。

此外,您应该使用非贪婪的.*?与贪婪.*匹配。

$res->content =~ /Your IP Address Is:.*?((?:\d{1,3}\.){3}\d{1,3})/s

最后,如果网页在此IP地址周围显示<!-- do not script -->,您可能不会遵循本网站的服务条款。查看本网站是否已提供用于访问此数据的API。