Программа Python для поиска типа IP-адреса с помощью Regex
Предварительное условие: Python Regex
Учитывая IP-адрес в качестве входных данных, напишите программу Python, чтобы определить тип IP-адреса, то есть IPv4 или IPv6 . Если ни один из них не задан, выведите ни один из них.
Что такое IP-адрес (Интернет-протокол)?
Каждый компьютер, подключенный к Интернету, идентифицируется уникальной строкой из четырех частей, известной как его IP-адрес. IPv4 и IPv6 - это Интернет-протокол версии 4 и Интернет-протокола версии 6, IP-версия 6 - это новая версия Интернет-протокола, которая намного лучше IP версии 4 с точки зрения сложности и эффективности.
- IPv4 был основной версией, введенной в действие для производства в рамках ARPANET в 1983 году. Адреса IP версии 4 представляют собой 32-битные целые числа, которые будут выражены в шестнадцатеричной системе счисления.
- Протокол IPv6 был разработан Инженерной группой Интернета (IETF) для решения проблемы исчерпания IP v4. IP v6 - это 128-битный адрес с адресным пространством 2 128 , что намного больше, чем IPv4. В IPv6 мы используем представление Colon-Hexa. Есть 8 групп, каждая из которых представляет 2 байта.
Примеры:
Ввод: 192.0.2.126 Выход: IPv4 Ввод: 3001: 0da8: 75a3: 0000: 0000: 8a2e: 0370: 7334 Выход: IPv6 Ввод: 36.12.08.20.52 Выход: Ни то, ни другое
Подход:
- В качестве входных данных возьмите IP-адрес.
- Теперь проверьте, похож ли этот IP-адрес на адреса типа IPv4, используя регулярное выражение.
- Если да, то выведите «IPv4», иначе проверьте, похож ли этот IP-адрес на адреса типа IPv6, используя регулярное выражение.
- Если да, то выведите «IPv6».
- Если адрес не похож ни на один из вышеперечисленных типов, мы напечатаем «Ни то, ни другое».
Ниже представлена реализация описанного выше подхода:
Python3
# Python program to find the type of Ip address # re module provides support # for regular expressions import re # Make a regular expression # for validating an Ipv4 ipv4 = """^(25[0-5]|2[0-4][0-9]|[0-1]?[0-9][0-9]?).( 25[0-5]|2[0-4][0-9]|[0-1]?[0-9][0-9]?).( 25[0-5]|2[0-4][0-9]|[0-1]?[0-9][0-9]?).( 25[0-5]|2[0-4][0-9]|[0-1]?[0-9][0-9]?)$""" # Make a regular expression # for validating an Ipv6 ipv6 = """(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}| ([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:) {1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1 ,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4} :){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{ 1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA -F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a -fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0 -9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0, 4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1} :){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9 ]).){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0 -9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4] |1{0,1}[0-9]){0,1}[0-9]).){3,3}(25[0-5]|(2[0-4] |1{0,1}[0-9]){0,1}[0-9]))""" # Define a function for finding # the type of Ip addess def find(Ip): # pass the regular expression # and the string in search() method if re.search(ipv4, Ip): print ( "IPv4" ) elif re.search(ipv6, Ip): print ( "IPv6" ) else : print ( "Neither" ) # Driver Code if __name__ = = "__main__" : # Enter the Ip address Ip = "192.0.2.126" # calling run function find(Ip) Ip = "3001:0da8:75a3:0000:0000:8a2e:0370:7334" find(Ip) Ip = "36.12.08.20.52" find(Ip) |
Выход:
IPv4 IPv6 Ни один
Внимание компьютерщик! Укрепите свои основы с помощью базового курса программирования Python и изучите основы.
Для начала подготовьтесь к собеседованию. Расширьте свои концепции структур данных с помощью курса Python DS. А чтобы начать свое путешествие по машинному обучению, присоединяйтесь к курсу Машинное обучение - базовый уровень.