У вас когда-нибудь возникала потребность в поиске строк, слов или даже символов в тексте?
В этой статье вы узнаете о регулярных выражениях в Python и научитесь работать с модулем «re», который позволяет совершать массу сравнительных и поисковых действий с текстом!
Что такое регулярное выражение?
Регулярное выражение – это средство работы с текстом, которое позволяет по заданному «паттерну» искать и редактировать искомое слово/строку в тексте.
Импортируем модуль «re»
Для начала работы нам нужно импортировать модуль.
Модуль «re» устанавливать не нужно, он устанавливается вместе с самим Python. Нам лишь нужно импортировать его в проект.
Для этого в начале строки пропишем:
import re
Основные регулярные выражения
re.match() – ищет совпадения в тексте, по умолчанию в начале строки.
import re pattern = ‘34’ testString = ’12 timeweb 34 community 58’ result = re.search(pattern, testString) print(result) # Результат None, если совпадения будут обнаружены - result вернет их.
re.findall() – возвращает все строки, где было обнаружено совпадение.
import re pattern = ‘d+’ (ищем только числа с помощью метасимволов, об этом далее) testString = ’12 timeweb 34 community 58’ result = re.findall(pattern, testString) print(result) # Результат [‘12’, ‘34’, ‘58’], если совпадения не будут обнаружены - то []
re.split() – разбивает строки по заданному паттерну и возвращает разбитые строки.
import re pattern = ‘d+’ testString = ’12 timeweb 34 community 58’ result = re.split(pattern, testString) print(result) # Результат [‘timeweb’, ‘community’], если совпадения не будут обнаружены - то []
re.sub() – заменяет символы по заданному паттерну на заданные символы и возвращает исправленную строку.
import re pattern = ‘timeweb’ replace = ‘hello’ testString = ’timeweb community of timeweb community’ result = re.sub(pattern, replace, testString) print(result) # Результат ‘hello community of hello community’, если совпадения не будут обнаружены, то вернется первоначальная строка.
re.search() – ищет указанный паттерн в строке и при первом же совпадении возвращает сам паттерн, в ином же случае возвращает None.
import re pattern = ‘34’ testString = ’12 timeweb 34 community 58’ result = re.search(pattern, testString) print(result) # Результат ‘34’, если совпадения не будут обнаружены - None.
Метасимволы
Давайте рассмотрим примеры использования метасимволов, которые есть в модуле.
К примеру, нам нужно найти слова car, cat и cab.
Дабы не нагромождать наш код, мы можем просто использовать квадратные скобки. В таком случае переменную мы запишем так:
pattern = ‘ca[rtb] ’
Либо же мы можем указать диапазон символов:
pattern = ‘ca[a-e] ‘ (заменяет [abcde]) pattern = ‘ca[1-5] ’ (заменяет [12345]) # Вы можете искать обратные указанным вами символам. # К примеру ‘[^0-9]’ ищет любые символы, кроме чисел; # ‘[0-9]’ ищет все числа.
Также мы можем обозначить, с какой стороны искать совпадения!
pattern = ‘^timeweb’ - ищет в начале pattern = ‘timeweb$’ - ищет в конце
Мы можем обозначить нужное количество символов с помощью периода.
pattern = ‘tim...’ - ищет tim и следующие три символа в начале
А еще метасимволы можно комбинировать!
pattern = ‘^t.....b$’
# Найдет совпадение, если в строке 7 символов,
# первым из которых является t, а последним b.
Краткие замены некоторым метасимволам
- d – ищет числа в тексте, заменяет [0-9].
- D – ищет любые символы кроме чисел в тексте, заменяет ‘[^0-9]’.
- s – находит совпадения при наличии пробелов в тексте.
- S – находит совпадения при отсутствии пробелов в тексте.
Надеюсь, что данная статья помогла вам разобраться с основами регулярных выражений в Python. Спасибо за внимание!