Регулярные выражения, часто называемые 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.']

Вы поняли этот код? Воспользуйтесь концепциями, обсуждавшимися выше.

На простом английском языке

Спасибо, что вы являетесь частью нашего сообщества! Прежде чем уйти: