|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- import re
- s='192.168.5.12'
- pi='(([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])'
- ru=re.findall(pi,s)
- print(ru)
复制代码
执行出来不对
请问代码哪里出问题了吗?
本帖最后由 阿奇_o 于 2021-9-2 20:27 编辑
为啥搞哪样复杂,为了练习正则表达式?
还不如只区分是否为数字就行了,是否0~255的判断,取出来之后单独来判断,方便得多
- In [16]: ip = "192.168.10.0"
- In [17]: m = re.fullmatch("(\d+).(\d+).(\d+).(\d+)", ip)
- In [18]: m.groups()
- Out[18]: ('192', '168', '10', '0')
- In [19]: m[0]
- Out[19]: '192.168.10.0'
- In [20]: m.groups()[0]
- Out[20]: '192'
复制代码
修改:
网上有现成的:
- pt = "((?:(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d))"
复制代码
部分解释:
先分为前三段和最后一段,前三段是 xxx. 最后段没有点;
数值的可能 25开头的(250-255),2开头的(200-249),0-199的合并为 [01]?\\d?\\d (0-199可能1位数或2位数3位数,问号代表0个或1个)
?: 这用法,我也搞不太清楚,据说用于这样子的 (?:...){3} 括号在这里不分组,并在后面接有多少个这样的模式
|
|