В мире сетевого программирования и проверки данных работа с IP-адресами является распространенной задачей. Проверить, является ли данная строка действительным IP-адресом, можно эффективно с помощью регулярных выражений, широко известных как регулярные выражения. В этой статье мы рассмотрим несколько методов, использующих разговорный язык, и предоставим примеры кода, которые помогут вам освоить проверку IP-адреса с помощью регулярных выражений.
Метод 1: базовая проверка IP-адреса
Давайте начнем с простого шаблона регулярного выражения, который проверяет адреса IPv4. Шаблон состоит из четырех групп цифр (от 0 до 255), разделенных точками.
import re
def validate_ip_address(ip_address):
pattern = r'^(\d{1,3}\.){3}\d{1,3}$'
if re.match(pattern, ip_address):
print("Valid IPv4 address")
else:
print("Invalid IPv4 address")
# Example usage
validate_ip_address('192.168.0.1') # Valid IPv4 address
validate_ip_address('256.0.0.1') # Invalid IPv4 address
Метод 2: расширенная проверка IP-адреса
Иногда мы можем встретить IP-адреса в разных форматах, например IPv6. Чтобы справиться с этими случаями, мы можем изменить наш шаблон регулярного выражения для поддержки адресов IPv4 и IPv6.
import re
def validate_ip_address(ip_address):
pattern = r'^(([0-9A-Fa-f]{1,4}):){7}([0-9A-Fa-f]{1,4})$|^((([0-9A-Fa-f]{1,4}):){0,6})(::)(([0-9A-Fa-f]{1,4}):([0-9A-Fa-f]{1,4})|((([0-9A-Fa-f]{1,4}):){0,5})(::)([0-9A-Fa-f]{1,4})|((([0-9A-Fa-f]{1,4}):){0,4})(::)(([0-9A-Fa-f]{1,4}):([0-9A-Fa-f]{1,4}){1,2})|((([0-9A-Fa-f]{1,4}):){0,3})(::)(([0-9A-Fa-f]{1,4}):([0-9A-Fa-f]{1,4}){1,3})|((([0-9A-Fa-f]{1,4}):){0,2})(::)(([0-9A-Fa-f]{1,4}):([0-9A-Fa-f]{1,4}){1,4})|(([0-9A-Fa-f]{1,4}):)(::)(([0-9A-Fa-f]{1,4}):([0-9A-Fa-f]{1,4}){1,5})|((([0-9A-Fa-f]{1,4}):){0,6})(::)([0-9A-Fa-f]{1,4}):$'
if re.match(pattern, ip_address):
print("Valid IP address")
else:
print("Invalid IP address")
# Example usage
validate_ip_address('2001:0db8:85a3:0000:0000:8a2e:0370:7334') # Valid IPv6 address
validate_ip_address('192.168.0.1') # Valid IPv4 address
validate_ip_address('256.0.0.1') # Invalid IP address
Метод 3: извлечение IP-адресов из текста
В некоторых случаях вам может потребоваться извлечь IP-адреса из более крупного текстового файла или файла журнала. Regex можно использовать для эффективного извлечения IP-адресов из такого текста.
import re
def extract_ip_addresses(text):
pattern = r'\b(?:\d{1,3}\.){3}\d{1,3}\b'
ip_addresses = re.findall(pattern, text)
return ip_addresses
# Example usage
text = "The server with IP address 192.168.0.1 is experiencing high traffic."
ip_addresses = extract_ip_addresses(text)
print(ip_addresses) # ['192.168.0.1']
Regex предоставляет мощный инструмент для проверки и извлечения IP-адресов. Используя шаблоны регулярных выражений, вы можете легко проверить адреса IPv4 и IPv6. Кроме того, регулярное выражение позволяет эффективно извлекать IP-адреса из больших текстов или файлов журналов. Благодаря примерам кода и методам, представленным в этой статье, вы теперь можете легко решать задачи проверки IP-адреса в своих проектах сетевого программирования.