如何使用Python在文件中搜索IP?

时间:2012-07-02 08:10:24

标签: python file search ip replace

我正在用Python编写脚本,我需要在文件中搜索和替换IP ....

有关如何实施的任何想法?

2 个答案:

答案 0 :(得分:3)

对于IPv4地址,您可以使用Regular-Expression.info提供的正则表达式。这将确保您的IP地址实际有效。

  

匹配IP地址是正则表达式复杂性和准确性之间权衡的另一个好例子。 \ b \ d {1,3}。\ d {1,3}。\ d {1,3}。\ d {1,3} \ b将匹配任何IP地址,但也会匹配999.999.999.999好像它是一个有效的IP地址。这是否是一个问题取决于您打算应用正则表达式的文件或数据。要将IP地址中的所有4个数字限制为0..255,您可以使用此复杂的野兽:\ b(25 [0-5] | 2 [0-4] [0-9] | [01]?[0 -9] [0-9])(25 [0-5] | 2 [0-4] [0-9] | [01] [0-9] [0-9])(25?。 [0-5] | 2 [0-4] [0-9] | [01] [0-9] [0-9])(25 [0-5] |?2 [0-4] [ 0-9] | [01]?[0-9] [0-9]?)\ b使用RegexBuddy(一行中的所有内容)分析此正则表达式。长正则表达式将4个IP地址中的每一个存储到捕获组中。您可以使用这些组进一步处理IP号。

     

如果您不需要访问单个数字,可以使用量词将正则表达式缩短为:\ b(?:( ?: 25 [0-5] | 2 [0-4] [0-9 ] | [01] [0-9] [0-9])){3}(?: 25 [0-5] |?2 [0-4] [0-9] | [01] [ 0-9] [0-9]?)\ b用RegexBuddy分析这个正则表达式。同样,您可以将快速正则表达式缩短为\ b(?:\ d {1,3}。){3} \ d {1,3} \ b使用RegexBuddy分析此正则表达式

答案 1 :(得分:2)

正则表达式!

re.sub('[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}','CENSORED_IP',data)

值得注意的是,这也符合999.999.999.999之类的内容。如果这是一个问题,你将需要得到一个更复杂的正则表达式。此外,这仅适用于IPv4地址。

仅限有效的IP:

re.sub('(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)','CENSORED_IP',data)

来源:Regex Source