要捕获IPv4地址中不正确的部分,可以使用以下正则表达式:
import re
def check_ipv4_address(ip):
    pattern = r'(\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b(\.(?!$)|$)){4}'
    match = re.fullmatch(pattern, ip)
    if match:
        return 'Valid IPv4 address'
    else:
        return 'Invalid IPv4 address'
# 测试用例
print(check_ipv4_address('192.168.0.1'))  # Valid IPv4 address
print(check_ipv4_address('256.0.0.1'))    # Invalid IPv4 address
print(check_ipv4_address('192.168.0'))    # Invalid IPv4 address
print(check_ipv4_address('192.168.0.1.1'))  # Invalid IPv4 address
这里的正则表达式(\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b(\.(?!$)|$)){4}用来匹配一个合法的IPv4地址。
\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b:匹配0-255之间的数字,可以是单个数字、两位数字或三位数字。使用\b来匹配边界,确保只匹配完整的数字。(\.(?!$)|$):匹配一个.,但不允许出现在字符串末尾。这样可以确保地址的最后一部分没有多余的.。{4}:表示前面的模式匹配四次,即匹配四个部分。如果输入的IP地址符合IPv4地址的格式,函数返回"Valid IPv4 address",否则返回"Invalid IPv4 address"。