我的朋友,
我真的想使用Python从字符串(实际上是一行html)中提取一个简单的IP地址。但事实证明,过了2个小时,我仍然无法想出一个很好的解决方案。
>>> s = "<html><head><title>Current IP Check</title></head><body>Current IP Address: 165.91.15.131</body></html>"
– ‘165.91.15.131’是我想要的!
我尝试使用正则表达式,但到目前为止,我只能得到第一个数字。
>>> import re >>> ip = re.findall( r'([0-9]+)(?:\.[0-9]+){3}',s ) >>> ip ['165']
实际上,我不觉得我对reg-expression有一个牢固的把握,上面的代码是从网络上的其他地方被发现和修改的。
寻求您的投入和想法!
解决方法
删除您的捕获组:
ip = re.findall( r'[0-9]+(?:\.[0-9]+){3}',s )
结果:
['165.91.15.131']
笔记:
>如果您正在解析HTML,那么查看BeautifulSoup可能是个好主意。>您的正则表达式匹配一些无效的IP地址,例如0.00.999.9999。这不一定是一个问题,但你应该知道它,并可能处理这种情况。您可以将部分修复的{1,3}更改为不会使正则表达式过于复杂。