Python正则表示IP
- 编程知识
- 2023-06-21
- 3
本文将从多个方面详细阐述如何使用Python正则表达式表示IP,并提供相关的示例代码。
一、IP地址的基础概念
IP地址是指互联网协议地址,是由32个二进制数组成的,通常以“xxx.xxx.xxx.xxx”的形式表示。IP地址的作用是标识互联网上的唯一设备,每个设备都必须拥有一个不同的IP地址。在Python中,我们可以使用正则表达式表示任意合法的IP地址。
二、Python正则表达式表示IP地址的方法
1、匹配以“xxx.xxx.xxx.xxx”形式表示的IPv4地址
import re
pattern = r"^((\d|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])\.){3}(\d|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])$"
ip_list = ['127.0.0.1', '192.168.0.1', '256.256.256.256', '0.0.0.0']
for ip in ip_list:
if re.match(pattern, ip):
print('Matched: ' + ip)
else:
print('Invalid IP address: ' + ip)
该正则表达式的含义为:以0~255之间的数字为组成的一到三位数,后面紧跟着一个小数点,共四组,第四组不需要小数点即可,最终匹配一个完整的IPv4地址。
2、匹配以“::”和“xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx”形式表示的IPv6地址
import re
pattern1 = r"^(.*\:){2}((\d|[a-f]|[A-F]){1,4}\:){4}((\d|[a-f]|[A-F]){1,4})$"
pattern2 = r"^(\:(\d|[a-f]|[A-F]){1,4}){3}\:(\d|[a-f]|[A-F]){1,4}$"
ip_list = ['2001:0db8:3c4d:0015:0000:0000:abcd:ef12', '::1', '::']
for ip in ip_list:
if re.match(pattern1, ip) or re.match(pattern2, ip):
print('Matched: ' + ip)
else:
print('Invalid IP address: ' + ip)
该正则表达式的含义为:以“::”形式表示的IPv6地址,或者以8组含有0~f之间的数字或字母的4位(不足4位前面补0)数形式表示的IPv6地址。
三、常用的IP地址相关操作
1、获取本地IP地址
import socket
hostname = socket.gethostname()
ip = socket.gethostbyname(hostname)
print('Local IP address:', ip)
该代码可以获取当前计算机的IP地址。通过socket.gethostname()获取本机计算机名,再使用socket.gethostbyname()方法获取对应的IP地址。
2、检查IP地址是否在某个IP段中
import ipaddress
ip_range = ipaddress.ip_network('192.168.0.0/24')
ip = ipaddress.IPv4Address('192.168.0.100')
if ip in ip_range:
print(ip, 'is in', ip_range)
else:
print(ip, 'is not in', ip_range)
这段代码使用了Python的ipaddress模块,可以检查一个IP地址是否在指定的IP段内。
四、总结
本文详细介绍了如何使用Python正则表达式表示IP地址、获取本地IP地址以及检查IP地址是否在某个IP段内。通过以上方法,我们可以更加灵活方便地进行相关操作。