Шпаргалка по регулярным выражениям Python 2023
t.me/sqlhubРегулярные выражения – это шаблоны, используемые для сопоставления комбинаций символов в строках. Они удобны в языке программирования Python для поиска и даже замены указанного текстового шаблона. В Python есть модуль под названием RE, который обеспечивает полную поддержку регулярных выражений. Проще говоря, регулярные выражения Python – это шаблоны для поиска, описываемые с помощью специального синтаксиса.
Эта шпаргалка по регулярным выражениям покажет вам наиболее часто используемые регулярные выражения, которые любой сетевой или системный администратор может использовать в качестве краткого справочника.
Метасимволы
В этой таблице показаны некоторые метасимволы (основные символы), которые используются для выполнения простых совпадений.
Специальные последовательности
Специальные последовательности определяют набор символов. Это самая базовая концепция регулярных выражений. Она позволяет одной небольшой специальной последовательности соответствовать более обширному набору символов.
Наборы
Наборы – это наборы символов, заключённых в квадратные скобки. Регулярное выражение Python соответствует любому из нескольких символов в наборе.
Функции модуля регулярных выражений(RE)
В Python есть встроенный модуль RE, используемый для работы с регулярными выражениями. Модуль RE предлагает набор функций, который позволяет нам искать совпадение в строке.
Примеры регулярных выражений Python
В этом разделе мы покажем вам несколько реальных примеров регулярных выражений Python.
Поиск типа IP-адреса
Здесь мы напишем программу на Python, которая использует регулярное выражение для проверки того, является ли данный IP-адрес IPv4, IPv6 или нет.
nano checkip.py
Добавьте следующий код:
import re
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]?)$'''
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]))'''
def find(Ip):
if re.search(ipv4, Ip):
print("IPv4")
elif re.search(ipv6, Ip):
print("IPv6")
else:
print("None")
# Driver Code
if __name__ == '__main__' :
Ip = "192.168.0.100"
find(Ip)
Сохраните и закройте файл, затем запустите программу с помощью следующей команды:
python3 checkip.py
Если IP-адрес (192.168.0.100), указанный в приведённом выше коде, является IPv4, то вы должны получить следующий вывод:
IPv4
Проверьте, зарезервирован ли указанный IPv4-адрес или нет
В этом примере мы проверим, зарезервирован ли данный IP-адрес или нет. Некоторые IP-адреса зарезервированы для экспериментальных и исследовательских целей. Диапазон IP–адресов 240.0.0.0 – 255.255.255.254 зарезервирован для исследовательских целей.
Давайте создадим новый файл, чтобы проверить зарезервированный IP-адрес:
nano checkreservedip.py
Добавьте следующий код:
from ipaddress import ip_address
def reservedIPAddress(IP: str) -> str:
return "Reserved" if (ip_address(IP).is_reserved) else "Not Reserved"
if __name__ == '__main__' :
# Not Reserved
print(reservedIPAddress('192.168.0.123'))
# Reserved
print(reservedIPAddress('240.0.0.20'))
Сохраните и закройте файл, затем запустите его, используя следующую команду:
python3 checkreservedip.py
Вы должны получить следующий результат:
Not Reserved Reserved
Это означает, что IP-адрес 192.168.0.123 не зарезервирован, а IP-адрес 240.0.0.20 зарезервирован.
Тестовый IP-адрес действителен или недействителен
В этом примере мы проверим, является ли данный IP-адрес действительным или нет.
Во-первых, создайте файл test.py:
nano test.py
Добавьте следующий код:
import re
k = 0
while k < 5 :
i = input("\nEnter Ip address : ")
ip = re.match("^([1][0-9][0-9].|^[2][5][0-5].|^[2][0-4][0-9].|^[1][0-9][0-9].|^[0- 9][0-9].|^[0-9].)([1][0-9][0-9].|[2][5][0-5].|[2][0-4][0-9].|[1][0-9][0-9].|[0-9][0-9].|[0-9].)([1][0-9][0-9].|[2][5][0-5].|[2][0-4][0-9].|[1][0-9][0-9].|[0-9][0-9].|[0-9].)([1][0-9][0-9]|[2][5][0-5]|[2][0-4][0-9]|[1][0-9][0-9]|[0-9][0-9]|[0-9])$",i)
k = k + 1
if ip:
print ("\n=====================")
print ("Valid IP address")
print ("=====================")
break
else :
print ("\nInvalid IP")
else :
print ("\nAllowed Max 5 times")
Сохраните и закройте файл, затем запустите скрипт со следующей командой:
python3 test.py
Вас попросят указать любой IP-адрес, как показано ниже:
Enter Ip address: 192.168.0.111
Укажите любой IP-адрес и нажмите Enter. Вы получите следующий результат:
===================== Valid IP address =====================
Теперь верните этот скрипт и укажите недопустимый IP-адрес. Вы получите следующий результат:
Enter Ip address: 10.123.342.255
Недопустимый IP-адрес
Проверьте действительный адрес электронной почты
В этом примере мы проверим, является ли указанный адрес электронной почты действительным или нет.
Давайте создадим файл test.py, используя следующую команду:
nano test.py
Добавьте следующий код:
import re
input_string = input("Enter Email address : ")
regex_pattern = r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b'
result = bool( re.match( regex_pattern, input_string))
if (result):
print ("Valid Email address")
else:
print ("Invalid Email address")
Сохраните и закройте файл, затем запустите его с помощью следующей команды:
python3 test.py
Вас попросят указать адрес электронной почты, как показано ниже:
Enter Email address : hitjethva@gmail.com
Укажите любой адрес электронной почты и нажмите Enter. Если указанный адрес электронной почты действителен, вы должны получить следующий результат:
Valid Email address
Вывод имени хоста и IP-адреса системы
В этом примере мы выведем IP-адрес и имя хоста вашей системы.
Давайте создадим файл test.py, используя следующую команду:
nano test.py
Добавьте следующий код:
import socket
hostname = socket.gethostname()
IPAddr = socket.gethostbyname(hostname)
print("Your System Hostname is:" + hostname)
print("Your System IP Address is:" + IPAddr)
Сохраните и закройте файл, затем запустите этот скрипт со следующей командой:
python3 test.py
Вы должны получить следующий результат:
Your System Hostname is:newpc
Ваш системный IP-адрес:127.0.0.1
Сканирование открытого порта на удалённом хосте
В этом примере мы просканируем удалённый хост и выведем все открытые порты.
Давайте создадим скрипт test.py на python, используя следующую команду:
nano test.py
Добавьте следующий код:
from socket import *
import time
startTime = time.time()
if __name__ == '__main__':
target = input('Enter the host to be scanned: ')
t_IP = gethostbyname(target)
print ('Starting scan on host: ', t_IP)
for i in range(50, 500):
s = socket(AF_INET, SOCK_STREAM)
conn = s.connect_ex((t_IP, i))
if(conn == 0) :
print ('Port %d: OPEN' % (i,))
s.close()
print('Time taken:', time.time() - startTime)
Сохраните и закройте файл, затем запустите приведённый выше скрипт со следующей командой:
python3 test.py
Вас попросят указать IP-адрес удалённого хоста, как показано ниже:
Enter the host to be scanned: 172.20.10.3
Укажите IP-адрес и нажмите Enter. Вы получите следующий результат:
Starting scan on host: 172.20.10.3 Port 80: OPEN Port 111: OPEN Port 139: OPEN Port 445: OPEN Time taken: 1.1808812618255615
Заключение
Я предоставил список всех наиболее часто используемых регулярных выражений Python с реальными примерами в приведённой выше шпаргалке. Я надеюсь, вы сможете использовать её в качестве краткого справочника.
1