我从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})/) {
答案 0 :(得分:3)
您的问题在于,除非您使用.
开关,否则/s
不会与返回字符匹配。
此外,您应该使用非贪婪的.*?
与贪婪.*
匹配。
$res->content =~ /Your IP Address Is:.*?((?:\d{1,3}\.){3}\d{1,3})/s
最后,如果网页在此IP地址周围显示<!-- do not script -->
,您可能不会遵循本网站的服务条款。查看本网站是否已提供用于访问此数据的API。