Регулярные выражения, часто называемые RegEx,, представляют собой мощные инструменты, используемые для поиска шаблонов и манипулирования строками в Python. Они позволяют искать, извлекать текст внутри строки и манипулировать им.
Представление символов в регулярном выражении
Существуют различные способы представления различных типов символов или набора символов для регулярных выражений:
Буквальные символы
Большинство символов в RegEx представляют собой самих себя. Например: буквальный символ a
представляет a
сам.
Классы символов
Это помогает вам представить определенный набор символов. Они представлены в скобках «[]». Например:
[abc]
соответствует «a», «b» или «c».[0-9]
соответствует любой цифре от 0 до 9.[^0-9]
соответствует любому символу, кроме цифры.
Метасимволы
Как упоминалось ранее, большинство символов представляют себя в RegEx, но некоторые из них необходимо использовать вместе с обратной косой чертой, чтобы использовать их в качестве буквальных символов. Эти символы имеют для себя особое значение. Например:
.
соответствует любому символу, кроме символа новой строки.*
соответствует нулю или более вхождению предыдущего символа или группы.+
соответствует одному или нескольким вхождениям предыдущего символа или группы.?
соответствует нулю или одному вхождению предыдущего символа или группы.^
соответствует началу строки.$
соответствует концу строки.
Кванторы
Кванторы указывают количество вхождений символов или групп и представлены в фигурных скобках «{}». Например:
{n}
соответствует ровно n вхождений.{n,}
соответствует как минимум n вхождениям.{n,m}
совпадений между n и m вхождениями.
Якоря
Якоря используются для соответствия определенной позиции в строке.
^
соответствует началу строки.$
соответствует концу строки.\b
соответствует границе слова.
Escape-последовательности
Они используются с обратной косой чертой для обозначения специальных символов или классов символов.
\d
соответствует любой цифре (эквивалент[0-9]
).\w
соответствует любому символу слова (эквивалентно[a-zA-Z0-9_]
).\s
соответствует любому пробельному символу.\t
соответствует символу табуляции.
Регулярное выражение в Python
Чтобы работать с регулярными выражениями в Python, вам необходимо импортировать re
module внутри вашего проекта.
Функции модуля re
- поиск (шаблон, строка): принимает два аргумента. Аргументами являются шаблон регулярного выражения и строка для поиска шаблона. Он возвращает объект соответствия, если он найден, и останавливается при первом появлении совпадения.
- совпадение (шаблон, строка): принимает два аргумента, аналогичные приведенным выше. Он проверяет шаблон в начале строки и возвращает объект соответствия, если он найден.
- findall (шаблон, строка): возвращает все непересекающиеся вхождения шаблона в строке в виде списка строк.
- sub (шаблон, замена, строка): Заменяет/заменяет все вхождения данного шаблона, содержащие символы, строкой замены.
- Split (шаблон, строка): разбивает строку на основе заданного шаблона и возвращает список подстрок.
- group(): извлекает совпавшую подстроку из объекта соответствия регулярному выражению. Он позволяет вам получить доступ к определенным частям совпавшего текста на основе групп захвата, определенных в шаблоне регулярного выражения.
Определение шаблона в Python
Существуют разные способы определения шаблонов в Python:
Строковые литералы
Это простые строковые шаблоны, используемые для поиска или сопоставления самого себя.
import re pattern = "hello"
Метод регулярного выражения
Он обеспечивает более гибкий способ определения шаблона в Python с использованием описанных выше методов представления.
import re pattern = r"\d{3}-\d{3}-\d{4}"
В данном случае это шаблон \d{3}-\d{3}-\d{4}
, который представляет собой шаблон для сопоставления телефонного номера в формате «###-###-####». \d
представляет цифру, а {3}
указывает, что в этой позиции должно быть ровно три цифры. Это представляет собой номер телефона.
Скомпилированные шаблоны
Модуль поставляется с методом compile(), который обеспечивает гораздо большую гибкость и лучшую производительность при поиске строк по шаблону.
import re pattern = re.compile(r"\b\w{4}\b")
Подводя итоги
Этот код суммирует все концепции, упомянутые выше:
import re # Example string text = "Hello, my email is [email protected] and my phone number is 123-456-7890." # Searching for an email address email_pattern = r"\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b" email_match = re.search(email_pattern, text) if email_match: print("Email found:", email_match.group()) #Email found: [email protected] # Searching for a phone number phone_pattern = r"\d{3}-\d{3}-\d{4}" phone_match = re.search(phone_pattern, text) if phone_match: print("Phone number found:", phone_match.group()) #Phone number found: 123-456-7890 # Replacing phone numbers with "XXX-XXX-XXXX" text_with_replaced_phone = re.sub(phone_pattern, "XXX-XXX-XXXX", text) print("Text with replaced phone numbers:", text_with_replaced_phone) # Text with replaced phone numbers: Hello, my email is [email protected] # and my phone number is XXX-XXX-XXXX. # Splitting the text by spaces words = re.split(r"\s", text) print("Words in the text:", words) # Words in the text: ['Hello,', 'my', 'email', 'is', '[email protected]', 'and', # 'my', 'phone', 'number', 'is', '123-456-7890.']
Вы поняли этот код? Воспользуйтесь концепциями, обсуждавшимися выше.
На простом английском языке
Спасибо, что вы являетесь частью нашего сообщества! Прежде чем уйти:
- Обязательно аплодируйте и следуйте за автором! 👏
- Еще больше контента вы можете найти на PlainEnglish.io 🚀
- Подпишитесь на нашу бесплатную еженедельную рассылку. 🗞️
- Следуйте за нами в Twitter(X), LinkedIn, YouTube и Discord.