如何在文档中搜索IP地址

所以我有一个文档(纯文本),我正在尝试从中提取所有IP地址。我能够使用正则表达式提取它们,但是它也包含了大量的版本号。我尝试使用,string.find()但是它要求我能够找到用于行尾的转义符(IP地址始终是一行的最后一件事),并且对于行末尾的转义符对我来说是未知的。有人知道我该如何提取这些地址?


慕婉清6462132
浏览 627回答 2
2回答

呼如林

如果您的地址始终在一行的末尾,请在该行上定位:ip_at_end = re.compile(r'(?:[0-9]{1,3}\.){3}[0-9]{1,3}$', re.MULTILINE)此正则表达式仅匹配行尾的点分四边形(4组数字,中间有点)。演示:>>> import re>>> ip_at_end = re.compile(r'(?:[0-9]{1,3}\.){3}[0-9]{1,3}$', re.MULTILINE)>>> example = '''\... Only addresses on the end of a line match: 123.241.0.15... Anything else doesn't: 124.76.67.3, even other addresses.... Anything that is less than a dotted quad also fails, so 1.1.4... does not match but 1.2.3.4... will.... '''>>> ip_at_end.findall(example)['123.241.0.15', '1.2.3.4']

蝴蝶不菲

描述这将匹配并验证ipv4地址,并确保各个字节在0-255的范围内(?:([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])免责声明是的,我意识到OP要求使用Python解决方案。仅包含此PHP解决方案以说明该表达式的工作原理PHP的例子<?php$sourcestring="this is a valid ip 12.34.56.78this is not valid ip 12.34.567.89";preg_match_all('/(?:(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])/i',$sourcestring,$matches);echo "<pre>".print_r($matches,true);?>$matches Array:(&nbsp; &nbsp; [0] => Array&nbsp; &nbsp; &nbsp; &nbsp; (&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [0] => 12.34.56.7&nbsp; &nbsp; &nbsp; &nbsp; ))
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python