直接上代码
import re
pattern = re.compile(r"(?=(\b|\D))((\d|([1-9][0-9][0-9])|1\d{1,2}|(2[0-4]\d)|(25[0-5]))\.){3}([0-9]|([1-9][0-9][0-9])|1\d{2}|(2[0-4]\d)|(25[0-5]))(?=(\b|\D))")
r = pattern.match("0.0.01.1")
ip = r.group() if r else None
print(ip)
稍微说明一下, 0-255.0-255.0-255.0-255
- 一位数的情况
\d - 两位数的情况
[1-9]\d - 三位数的情况
3.1 以1开头
1\d{2}
3.2 以2开头
3.2.1 第二位是0-4
2[0-4]\d
3.2.2 第二位是5
25[0-5]
边界为单词边界或非数字
?=(\b|\D)