鱼C论坛

 找回密码
 立即注册
查看: 2096|回复: 2

关于正则表达式中匹配IP地址的一个疑问

[复制链接]
发表于 2017-2-16 23:00:29 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
各位老鱼油,前辈、大神,新手上路,希望多多指导:


源代码:
import urllib.request as request
import re


def  openurl(url):
    response = request.Request(url)
    agent = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.104 Safari/537.36 Core/1.53.2141.400 QQBrowser/9.5.10219.400'
    response.add_header('User-Agent',agent)
    html = request.urlopen(response)
    html = html.read().decode('utf-8')

    return html

def getip(html):
    #第一种格式
    #p = re.compile(r'(?:(?1|:[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}(?:1|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])')
   #第二种格式
    p = re.compile(r'(?:(?:[0,1]?\d?\d|2[0-4]\d|25[0-5])\.){3}(?:[0,1]?\d?\d|2[0-4]\d|25[0-5])')

    result = p.findall(html)
    count = 0
    for ip in result:
        print(ip)
        count += 1
    print(count)

def loadip():
    url = 'http://www.xicidaili.com/wn/1'
    html = openurl(url)
    getip(html)


loadip()

问题:
        我看了下两种匹配模式,新手认为第一种模式和第二种模式的效果是一样的但是结果却完全不一致,而且用第一种模式匹配出来的IP地址有点奇怪。经过试验验证,新手认为第二种格式是对的,但是却不知道第一种格式是什么原因导致失败,找不出问题所在,为什么会有区别,希望各位鱼油老师,大神指点,谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-2-17 05:31:02 | 显示全部楼层
perl:
if($str =~ /\d{1,3\.\d{1,3\.\d{1,3}\.\d{1,3/){code}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-2-17 11:13:49 | 显示全部楼层
菜鸟帮顶
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-2-9 09:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表