我有两个字符串,我想从中提取IP。
这些是:
a = """+CGCONTRDP: 1,0,"open.internet","100.80.54.162.255.255.255.255","100.80.54.162","8.8.8.8
","62.40.32.33","0.0.0.0","0.0.0.0",0
OK
"""
b = """+UIPADDR: 1,"usb0:0","100.80.54.93","255.255.255.255","",""
OK
"""
从第一个开始我需要100.80.54.162
,第二个我想要100.80.54.162
。
现在显然IP中的数字长度发生了变化。目前我正在","
吐痰,并在前4 .
之前查找数字。什么是更好的方法,因为它看起来很脏,也许是第一次出现digits.digits.digits.digits并停在下一个非数字字符,一个模式寻找?你会怎么做?
答案 0 :(得分:3)
如果您只想匹配字符串中前四个以点分隔的数字,那么这很简单:
>>> re.search(r"\d+\.\d+\.\d+\.\d+", a).group()
'100.80.54.162'
如果你想做一些额外的检查(只允许0到255之间的数字),你可以:
>>> re.search(r"""(?x)\b(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.
... (25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.
... (25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.
... (25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\b""", b).group()
'100.80.54.93'