|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 技术农民 于 2018-3-23 09:09 编辑
关于正则表达式匹配IP和端口,在鱼C的书籍教程中,发现两个问题,一直没解决,
问题如下:
书籍教学源代码如下:
- import re
- re.search(r'(([01]{0,1}\d{0,1}\d|2[0-4]\d|25[0-5])\.){3}([01]{0,1}\d{0,1}\d|2[0-4]\d|25[0-5])','other192.168.1.1other')
复制代码
运行后能得出和书本一样的正确结果。
- <_sre.SRE_Match object; span=(5, 16), match='192.168.1.1'>
复制代码
但是修改匹配的IP地址后,问题发生了。
1。如果IP地址是不正确的。
- re.search(r'(([01]{0,1}\d{0,1}\d|2[0-4]\d|25[0-5])\.){3}([01]{0,1}\d{0,1}\d|2[0-4]\d|25[0-5])','other392.168.1.1other')
复制代码
运行后的结果为:
- <_sre.SRE_Match object; span=(6, 16), match='92.168.1.1'>
复制代码
结果不正确。
2.如果IP地址的最后一段IP地址是2XX以下的,就没错。2XX以上的,就会出错。。
- re.search(r'(([01]{0,1}\d{0,1}\d|2[0-4]\d|25[0-5])\.){3}([01]{0,1}\d{0,1}\d|2[0-4]\d|25[0-5])','other192.168.1.123other')
复制代码
运行结果正确:- <_sre.SRE_Match object; span=(5, 18), match='192.168.1.123'>
复制代码
如果是2XX的。
- re.search(r'(([01]{0,1}\d{0,1}\d|2[0-4]\d|25[0-5])\.){3}([01]{0,1}\d{0,1}\d|2[0-4]\d|25[0-5])','other192.168.1.223other')
复制代码
运行结果错误: - <_sre.SRE_Match object; span=(5, 17), match='192.168.1.22'>
复制代码
初学者,实在不知道原因,往大侠解答以下。
查了半天,改为re.search(r'(([01]{0,1}\d{0,1}\d|2[0-4]\d|25[0-5])\.){3}([01]{0,1}\d{0,1}\d|2[0-4]\d|25[0-5])\w)'就可以完美匹配了,连‘356’这种不合规范的IP都能匹配出来 
|
|