python - 正则表达式:如何从字符串中提取第一个 IP 地址(在 Python 中)

标签 python regex

给定以下字符串(或类似的字符串,其中一些可能包含多个 IP 地址):

from mail2.oknotify2.com (mail2.oknotify2.com. [208.83.243.70]) by mx.google.com with ESMTP id dp5si2596299pdb.170.2015.06.03.14.12.03

我希望在 Python 中提取第一个也是唯一一个 IP 地址。在 nregex.com 上尝试使用类似 ([0-9]{2,}\.){3}([0-9]{2,}){1} 的第一次尝试, 看起来几乎 OK,匹配 IP 地址很好,但也匹配另一个大致类似于 IP 地址 (170.2015.06.03.14.12.03) 的子字符串。但是,当将相同的模式传递给 re.compile/re.findall 时,结果是:

[(u'243.', u'70'), (u'06.', u'03')]

很明显正则表达式不好。我怎样才能改进它,使它更整洁并捕获所有 IPV4 地址,我怎样才能使它只匹配第一个地址?

非常感谢。

最佳答案

按照以下模式使用 re.search:

>>> s = 'from mail2.oknotify2.com (mail2.oknotify2.com. [208.83.243.70]) by mx.google.com with ESMTP id dp5si2596299pdb.170.2015.06.03.14.12.03'
>>> import re
>>> re.search(r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}', s).group()
'208.83.243.70'

关于python - 正则表达式:如何从字符串中提取第一个 IP 地址(在 Python 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30654285/

相关文章:

php - 使用 PHP 从 html 标签中删除属性,同时保留特定属性

python - 识别排序列表中不同的连续倍数

python - OpenCV 霍​​夫圆的回溯

javascript - Jquery 字符串与正则表达式匹配不起作用

regex - 现代编程语言中的 "regex"真的是 "context sensitive grammar"吗?

regex - "UnicodeEncodeError: ' ascii ' codec can' t 编码字符"

python - 使用字典将重复行映射到原始行 - Python 3.6

python - 我如何在 python 的 Windows 上安装 boto 库?

python - 在 Python 中通过 os.system 在命令行上执行 MySQL 查询

python - 使用自定义验证覆盖 URLField 的验证