Уроки Python 17 // Регулярные выражения (часть 1)
Регулярные выражения - это специальные шаблоны для поиска и замены строк в тексте. Внутри этих шаблонов используются сокращенные обозначения групп символов. Прежде чем перейти к изучению регулярных выражений следует перечислить эти самые символы. Что они означают и зачем применяются вы поймете позже, дочитав статью до конца, а пока просто перечислим их.
Данные символы используются для составления регулярных выражений, но прежде чем мы начнем использовать их, давайте познакомимся с командами модуля re. Этот модуль можно импортировать в начале программы с помощью import re.
re.search(pattern,string)
Данная команда ищет в тексте string первое вхождение шаблона pattern. Команда возвращает группу строк, доступ к которым можно получить через команду group(). Давайте пока попробуем использовать эту команду без применения специальных символов, перечисленных выше.
В качестве примера давайте попробуем найти слово "информатика" в тексте.
import re
pattern=r"информатика"
string="В современном мире информатика и информационные системы будут играть решающую роль. Поэтому, информатика - важная наука."
result=re.search(pattern, string)
print(result.group(0))
Программа напечатает:
информатика
Команда search ищет только первое вхождение шаблона. Поэтому в нашем случае вернется всего один результат - слово "информатика", несмотря на то, что в нашем тексте данное слово присутствует два раза. Чтобы вернуть все вхождения шаблона в текст, используется следующая команда:
re.findall(pattern, string)
Данная команда вернет список строк, которые присутствуют в тексте и совпадают с шаблоном.
import re
pattern=r"информатика"
string="В современном мире информатика и информационные системы будут играть решающую роль. Поэтому, информатика - важная наука."
result=re.findall(pattern, string)
print(result)
Программа напечатает список:
['информатика', 'информатика']
В предыдущих двух примерах программ в качестве шаблона pattern для поиска строк мы использовали просто какое-то слово. Но мощь регулярных выражений не в этом. Помните табличку, которая была вверху статьи? Мы можем заменять части шаблона специальными символами. Давайте, например, попробуем найти в данном тексте все слова, которые начинаются с "инф". Для этого используем символ \b для того, чтобы указать начало слова. Далее укажем с чего должно начинаться слово, и напишем символ w+, который означает, что дальше в шаблоне должны идти какие-то буквы до тех пор, пока не встретится символ не-буква. Шаблон будет выглядеть так:
r"\bинф\w+"
Обратите внимание, что шаблоны в регулярных выражениях имеют буковку r перед началом строки.
import re
pattern=r"\bинф\w+"
string="В современном мире информатика и информационные системы будут играть решающую роль. Поэтому, информатика - важная наука."
result=re.findall(pattern, string)
print(result)
Программа напечатает список всех слов, начинающихся с "инф":
['информатика', 'информационные', 'информатика']
С помощью знаков из таблички мы сделали шаблон, который позволил нам найти слова, которые ему соответствуют. Давайте попробуем задачу посложнее. Найдем в тексте все e-mail с доменом mail.ru, если они там есть.
import re
pattern=r"\b\w+@mail.ru"
string="Если вы хотите связаться с админом, пишите на почту wbsr@mail.ru. По другим вопросам обращайтесь на iwqn@mail.ru."
result=re.findall(pattern, string)
print(result)
Программа напечатает все слова, которые заканчиваются на @mail.ru
['wbsr@mail.ru', 'iwqn@mail.ru']
Посмотрите внимательно на таблицу знаков, применяющихся в регулярных выражения (в начале статьи). Поищите примеры регулярных выражений в гугле и попытайтесь понять их, исходя из этой таблицы.
В следующем уроке мы раскроем тему регулярных выражений более подробно.