Регулярные выражения в Python

PythonBeginner
Практиковаться сейчас

Введение

Регулярные выражения, также известные как "regex", - это мощный инструмент для работы со строками. Они могут быть использованы для поиска, редактирования и манипулирования текстом различными способами. В этом практическом занятии вы изучите основы работы с регулярными выражениями в Python.

Достижения

  • Регулярные выражения

Импортируйте модуль re

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

Откройте новую сессию интерпретатора Python и введите следующий код:

python3

Добавьте следующую строку в начало вашего скрипта Python:

import re

Компилировать регулярное выражение

Прежде чем использовать регулярное выражение для поиска шаблона в строке, вы должны сначала его скомпилировать. Для компиляции регулярного выражения вы можете использовать функцию re.compile().

Например, следующий код скомпилирует регулярное выражение, которое ищет букву "a" в строке:

regex = re.compile(r"a")

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

Теперь, когда вы скомпилировали регулярное выражение, вы можете использовать метод search() для поиска шаблона в строке.

Например, следующий код будет искать букву "a" в строке "cat":

match = regex.search("cat")
print(match) ## Output: <re.Match object; span=(1, 2), match='a'>

Метод search() вернет объект Match, если шаблон найден, или None, если шаблон не найден.

Использовать метод match()

Метод match() похож на метод search(), но он совмещает шаблоны только в начале строки.

Например, следующий код сопоставит шаблон "cat" в начале строки "catdog":

regex = re.compile(r"cat")
match = regex.match("catdog")
print(match) ## Output: <re.Match object; span=(0, 3), match='cat'>

Использовать метод findall()

Метод findall() возвращает список всех вхождений шаблона в строке.

Например, следующий код найдет все буквы "a" в строке "cat":

regex = re.compile(r"a")
matches = regex.findall("cat")
print(matches)  ## Output: ["a"]

В регулярных выражениях есть множество специальных символов, которые можно использовать для сопоставления более сложных шаблонов. Вот несколько примеров:

  • . (точка) соответствует любому одному символу
  • * соответствует нулю или более вхождений предыдущего символа
  • + соответствует одному или более вхождений предыдущего символа
  • ? соответствует нулю или одному вхождению предыдущего символа
  • [characters] соответствует любому одному символу внутри квадратных скобок

Использовать группы

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

Например, следующее регулярное выражение будет соответствовать любому слову, которое начинается с "cat" и заканчивается на "dog":

regex = re.compile(r"cat(.*)dog")

Затем вы можете использовать метод group() объекта Match для извлечения части шаблона, которая соответствует группе. Например:

match = regex.search("catdog")
print(match.group(1))  ## Output: "" (пустая строка)

match = regex.search("catfooddog")
print(match.group(1))  ## Output: "food"

Использовать метод sub()

Метод sub() позволяет заменить все вхождения шаблона в строке на другую строку.

Например, следующий код заменит все буквы "a" в строке "cat" на букву "b":

regex = re.compile(r"a")
new_string = regex.sub("b", "cat")
print(new_string)  ## Output: "cbt"

Использовать метод split()

Метод split() позволяет разбивать строку по шаблону.

Например, следующий код разделит строку "cat dog" по пробельному символу:

regex = re.compile(r" ")
words = regex.split("cat dog")
print(words)  ## Output: ["cat", "dog"]

Regex101

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

Для использования Regex101 вы можете ввести регулярное выражение в поле "Regex" и строку для тестирования его в поле "Test String". При наборе инструмент будет выделять все совпадения в строке, а также отображать любые ошибки или предупреждения в разделе "Result".

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

В целом, Regex101 - это ценный инструмент для любого, кто работает с регулярными выражениями в Python или любом другом языке программирования.

Резюме

В этом практическом занятии вы узнали, как использовать регулярные выражения в Python для поиска, сопоставления и манипуляций со строками. Вы узнали, как компилировать регулярные выражения, как использовать различные методы, такие как search(), match(), findall() и sub(), а также как использовать специальные символы и группы для сопоставления более сложных шаблонов.

Надеюсь, это поможет! Если у вас возникнут вопросы, сообщите мне.