Regular expression python cheat sheet

Шпаргалка по регулярным выражениям Python 2023

Регулярные выражения – это шаблоны, используемые для сопоставления комбинаций символов в строках. Они удобны в языке программирования Python для поиска и даже замены указанного текстового шаблона. В Python есть модуль под названием RE, который обеспечивает полную поддержку регулярных выражений. Проще говоря, регулярные выражения Python – это шаблоны для поиска, описываемые с помощью специального синтаксиса.

Эта шпаргалка по регулярным выражениям покажет вам наиболее часто используемые регулярные выражения, которые любой сетевой или системный администратор может использовать в качестве краткого справочника.

Метасимволы

В этой таблице показаны некоторые метасимволы (основные символы), которые используются для выполнения простых совпадений.

Символы Объяснение
a Соответствует символу a
ab Соответствует строке ab
a | b Соответствует a ИЛИ b
$ Конец строки
i Игнорировать регистр
s Соответствует всему, включая перевод строки
u Соответствует классам символов Unicode
x Разрешает пробелы и комментарии (подробные)
^ Начало строки
* От нуля вхождений. То же самое, что
+ От одного вхождения. То же самое, что
? От нуля до одного вхождения. То же самое, что
Сопоставьте a с b раз
Совпадает хотя бы раз
Совпадение до b раз.
Совпадение ровно одному
? Сопоставляет выражение с a количеством раз и игнорирует b

Специальные последовательности

Специальные последовательности определяют набор символов. Это самая базовая концепция регулярных выражений. Она позволяет одной небольшой специальной последовательности соответствовать более обширному набору символов.

Классы Объяснение
\ d Любая цифра. То же самое, что 9
\ D Любой символ, кроме цифры. То же самое, что [^0-9]
\w Любая буква, цифра и нижнее подчёркивание
\W Любой символ, кроме буквы, цифры и нижнего подчёркивания
\ s Любой пробельный символ (пробел, новая строка, табуляция, возврат каретки и тому подобное)
\ S Любой символ, кроме пробельного
\ n Соответствует символу новой строки
\ t Соответствует символу табуляции
\ b Начало или конец слова
\ Z Конец строки. То же самое, что $
\ A Начало строки. То же самое, что ^

Наборы

Наборы – это наборы символов, заключённых в квадратные скобки. Регулярное выражение Python соответствует любому из нескольких символов в наборе.

Наборы Объяснение
[a-z] Возвращает совпадение для любого символа нижнего регистра в алфавитном порядке от a до z
[xyz] Возвращает совпадение, в котором присутствует один из указанных символов (x, y или z)
[x \ -z] Соответствует x, или -z.
[-x] Совпадение или -x.
[a-d0-9] Соответствует символам от a до d или от 0 до 9.
[^ xy4] Соответствует символам, которые не являются x, y или 4.
[(+*)] Совпадения (, +, * или ).
18 Совпадения для любых двузначных чисел от 00 до 59.
[^ ab5] Добавление ^ исключает любой символ в наборе. Здесь оно соответствует символам, которые не являются a, b или 5.

Функции модуля регулярных выражений(RE)

В Python есть встроенный модуль RE, используемый для работы с регулярными выражениями. Модуль RE предлагает набор функций, который позволяет нам искать совпадение в строке.

RE Функции Объяснение
re.Match Ищет pattern в начале строки string и возвращает Match-объект, если таковой имеется
re.search Ищет pattern по всей строке string. Возвращает Match-объект с первым совпадением, остальные не находит
re.fullmatch Возвращает объект соответствия тогда и только тогда, когда вся строка соответствует шаблону. В противном случае она вернёт значение None
re.compile Собирает регулярное выражение в объект для будущего использования в других re-функциях. Ничего не ищет, всегда возвращает Pattern-объект
re.sub Заменяет в строке string все pattern на repl. Возвращает строку в изменённом виде
re.escape Возвращает строку со всеми не алфавитно-цифровыми символами с обратным слешем
re.split Разделяет строку string по подстрокам, соответствующим pattern
re.findall Ищет pattern по всей строке string. Возвращает список со всеми найденными совпадениями
re.subn Возвращает новую строку вместе с номером замены

Примеры регулярных выражений Python

В этом разделе мы покажем вам несколько реальных примеров регулярных выражений Python.

Поиск типа IP-адреса

Здесь мы напишем программу на Python, которая использует регулярное выражение для проверки того, является ли данный IP-адрес IPv4, IPv6 или нет.

import re ipv4 = '''^(255|225|1?57?)\.( 255|227|1?84?)\.( 252|227|1?33?)\.( 253|238|1?27?)$''' ipv6 = '''(([0-9a-fA-F]:)[0-9a-fA-F]| ([0-9a-fA-F]:):|([0-9a-fA-F]:) :[0-9a-fA-F]|([0-9a-fA-F]:)(:[0-9a-fA-F])|([0-9a-fA-F] :)(:[0-9a-fA-F])|([0-9a-fA-F]< 1,4>:)(:[0-9a-fA-F])|([0-9a-fA -F]:)(:[0-9a-fA-F])|[0-9a -fA-F]:((:[0-9a-fA-F]))|:((:[0 -9a-fA-F])|:)|fe80:(:[0-9a-fA-F])%[0-9a-zA-Z]|::(ffff(:0) :)((253|(23|16)[0-9 ])\.)(255|(24|18)[0 -9])|([0-9a-fA-F]:):((255|(21 |19)8)\.)(255|(24 |12)3))''' 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)

Сохраните и закройте файл, затем запустите программу с помощью следующей команды:

Если IP-адрес (192.168.0.100), указанный в приведённом выше коде, является IPv4, то вы должны получить следующий вывод:

Проверьте, зарезервирован ли указанный IPv4-адрес или нет

В этом примере мы проверим, зарезервирован ли данный IP-адрес или нет. Некоторые IP-адреса зарезервированы для экспериментальных и исследовательских целей. Диапазон IP–адресов 240.0.0.0 – 255.255.255.254 зарезервирован для исследовательских целей.

Давайте создадим новый файл, чтобы проверить зарезервированный IP-адрес:

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

Вы должны получить следующий результат:

Это означает, что IP-адрес 192.168.0.123 не зарезервирован, а IP-адрес 240.0.0.20 зарезервирован.

Тестовый IP-адрес действителен или недействителен

В этом примере мы проверим, является ли данный IP-адрес действительным или нет.

Во-первых, создайте файл test.py:

Сохраните и закройте файл, затем запустите скрипт со следующей командой:

Вас попросят указать любой IP-адрес, как показано ниже:

Enter Ip address: 192.168.0.111

Укажите любой IP-адрес и нажмите Enter. Вы получите следующий результат:

Теперь верните этот скрипт и укажите недопустимый IP-адрес. Вы получите следующий результат:

Enter Ip address: 10.123.342.255

Проверьте действительный адрес электронной почты

В этом примере мы проверим, является ли указанный адрес электронной почты действительным или нет.

Давайте создадим файл 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]\b'
result = bool( re.match( regex_pattern, input_string)) if (result): print ("Valid Email address") else: print ("Invalid Email address")

Сохраните и закройте файл, затем запустите его с помощью следующей команды:

Вас попросят указать адрес электронной почты, как показано ниже:

Enter Email address : hitjethva@gmail.com

Укажите любой адрес электронной почты и нажмите Enter. Если указанный адрес электронной почты действителен, вы должны получить следующий результат:

Вывод имени хоста и IP-адреса системы

В этом примере мы выведем IP-адрес и имя хоста вашей системы.

Давайте создадим файл test.py, используя следующую команду:

import socket hostname = socket.gethostname() IPAddr = socket.gethostbyname(hostname) print("Your System Hostname is:" + hostname) print("Your System IP Address is:" + IPAddr)

Сохраните и закройте файл, затем запустите этот скрипт со следующей командой:

Вы должны получить следующий результат:

Your System Hostname is:newpc

Ваш системный IP-адрес:127.0.0.1

Сканирование открытого порта на удалённом хосте

В этом примере мы просканируем удалённый хост и выведем все открытые порты.

Давайте создадим скрипт test.py на python, используя следующую команду:

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)

Сохраните и закройте файл, затем запустите приведённый выше скрипт со следующей командой:

Вас попросят указать 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 с реальными примерами в приведённой выше шпаргалке. Я надеюсь, вы сможете использовать её в качестве краткого справочника.

Источник

Python Regex Cheat Sheet

This page provides a Python regex cheat sheet that you can quickly reference while working with regular expressions.

Character sets

Pattern Meaning
\w Match a single word character a-z, A-Z, 0-9, and underscore (_)
\d Match a single digit 0-9
\s Match whitespace including \t, \n, and \r and space character
. Match any character except the newline
\W Match a character except for a word character
\D Match a character except for a digit
\S Match a single character except for a whitespace character

Anchors

Pattern Meaning
^ Match at the beginning of a string
$ Match at the end of a string
\b Match a position defined as a word boundary
\B Match a position that is not a word boundary

Quantifiers

Quantifiers (Greedy) Non-greedy Quantifiers (Lazy) Meaning
* *? Match its preceding element zero or more times.
+ +? Match its preceding element one or more times.
? ?? Match its preceding element zero or one time.
? Match its preceding element exactly n times.
? Match its preceding element at least n times.
? Match its preceding element from n to m times

Sets & Ranges

Pattern Meaning
[XYZ] Match any of three elements X, Y, and Z
[X-Y] Match a range from X to Y
^[XYZ] Match any single element except X, Y, and Z
^[X-Y] Match any single element
Match its preceding element at least n times.
Match its preceding element from n to m times

Capturing Groups

Pattern Meaning
(X) Capture the X in the group
(?PX) Capture the X and assign it the name
\N Reference the capturing group #N
\g Reference the capturing group #N (alternative syntax)

Alternation

Look Around

Pattern Meaning
X(?=Y) Match X but only if it is followed by Y
X(?!Y) Match X but only if it is NOT followed by Y
(?<=Y)X Match X if there is Y before it
(? Match X if there is NO Y before it

Regex functions

The following table shows the regex function from the re module.

Function Description
findall() Return a list of matches or None
finditer() Return an iterator yielding all non-overlapping matches
search() Return the first match
fullmatch() Return a Match object if the whole string matches a pattern
match() Return the match at the beginning of a string or None
sub() Return a string with matched replaced with a replacement
split() Split a string at the occurrences of matches

Regex Flags

Flag Alias Inline Flag Meaning
re.ASCII re.A ?m The re.ASCII is relevant to the byte patterns only. It makes the \w , \W , \b , \B , \d , \D, and \S perform ASCII-only matching instead of full Unicode matching.
re.DEBUG N/A N/A The re.DEBUG shows the debug information of compiled pattern.
re.IGNORECASE re.I ?i perform case-insensitive matching. It means that the [A-Z] will also match lowercase letters.
re.LOCALE re.L ?L The re.LOCALE is relevant only to the byte pattern. It makes the \w , \W , \b , \B and case-sensitive matching dependent on the current locale. The re.LOCALE is not compatible with the re.ASCII flag.
re.MUTILINE re.M ?m The re.MULTILINE makes the ^ matches at the beginning of a string and at the beginning of each line and $ matches at the end of a string and at the end of each line.
re.DOTALL re.S ?s By default, the dot ( . ) matches any characters except a newline. The re.DOTALL makes the dot ( . ) matches all characters including a newline.
re.VERBOSE re.X ?x The re.VERBOSE flag allows you to organize a pattern into logical sections visually and add comments.

Источник

Читайте также:  Блок div справа css
Оцените статью