Python正则表达式匹配和提取IP地址

  • Post category:Python

Python正则表达式匹配和提取IP地址

在Python中,我们可以使用正则表达式进行字符串匹配和提取。IP地址是一种常见的字符串格式,我们可以使用正则表达式来匹配和提取IP地址。本攻略将详细讲解如何使用Python正则表达式匹配和提取IP地址,包括如何使用正则表达式匹配IP地址、如何使用re模块提取IP地址。

使用正则表达式匹配IP地址

在Python中,我们可以使用正则表达式匹配IP地址。IP地址的格式为xxx.xxx.xxx.xxx,其中每个xxx表示一个0到255之间的数字。下面是一个例子,演示如何使用正则表达匹配IP地址:

import re

text = '192.168.0.1'
pattern = r'^((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)$'
result = re.match(pattern, text)
if result:
    print('Match found:', result.group())
else:
    print('Match not found')

在上面的代码中,我们使用正则表达式^((25[0-5]|2[0-4]\d|[01]?\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)$进行匹配。这个正则表达式使用^$匹配字符串的开头和结尾,使用((25[0-5]|2[0-4]\d|[01]?\d?)\.)匹配三个数字和一个.,使用(25[0-5]|2[0-4]\d|[01]?\d\d?)匹配最后一个数字。然后,我们使用match()函数进行匹配。match()函数返回第一个匹配的结果。如果匹配成功,我们使用group()函数获取匹配到的IP地址。运行代码后,结果为:

Match found: 192.168.0.1

使用re模块提取IP地址

在Python中,我们可以使用re模块提取IP地址。下面是一个例子,演示如何使用re模块提取IP地址:

import re

text = 'IP address: 192.168.0.1'
pattern = r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}'
result = re.search(pattern, text)
if result:
    print('IP address:', result.group())
else:
    print('Match not found')

在上面的代码中,我们使用正则表达式\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}进行匹配。这个正则表达式使用\d{1,3}匹配一个1到3位的数字,使用\.匹配一个.。然后,我们使用search()函数进行匹配。search()函数返回第一个匹配的结果。如果匹配成功,我们使用group()函数获取匹配到的IP地址。运行代码后,结果为:

IP address: 192.168.0.1

示例说明

示例1:匹配日志文件中的IP地址

下面是一个例子,演示如何使用Python正则表达式匹配日志文件中的IP地址:

import re

log = '192.168.0.1 - - [01/Jan/2022:12:00:00 +0800] "GET /index.html HTTP/1.1" 200 1234'
pattern = r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}'
result = re.search(pattern, log)
if result:
    print('IP address:',.group())
else:
    print('Match not found')

在上面的代码中,我们使用正则表达式\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}进行匹配。这个正则表达式使用\d{1,3}匹配一个1到3位的数字,使用\.匹配一个.。然后,我们使用search()函数进行匹配。search()函数返回第一个匹配的结果。如果匹配成功,我们使用group()函数获取匹配到的IP地址。运行代码后,结果为:

IP address: 192.168.0.1

示例2:提取多个IP地址

下面是一个例子,演示如何使用Python正则表达式提取多个IP地址:

import re

text = 'IP addresses: 192.168.0.1, 10.0.0.1, 172.16.0.1'
pattern = r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}'
result = re.findall(pattern, text)
if result:
    print('IP addresses:', result)
else:
    print('Match not found')

在上面的代码中,我们使用正则表达式\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}进行匹配。这个正则表达式使用\d{1,3}匹配一个1到3位的数字,使用\.匹配一个.。然后,我们使用findall()函数进行匹配。findall()函数返回所有匹配的结果。如果匹配成功,我们使用group()函数获取匹配到的IP地址。运行代码后,结果为:

IP addresses: ['192.168.0.1', '10.0.0.1', '172.16.0.1']

以上是Python正则表达匹配和提取IP地址的完整攻略。在实际应用中,我们可以根据具体情况选择合适的正则表达式模式,以便快速、准确地匹配和提取IP地址。