Уроки 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']

Посмотрите внимательно на таблицу знаков, применяющихся в регулярных выражения (в начале статьи). Поищите примеры регулярных выражений в гугле и попытайтесь понять их, исходя из этой таблицы.

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

программированиеобразованиеpythonпитонуроки
25%
40
104
14.676 GOLOS
0
В избранное
Pythono
Python, PHP, Web-dev
104
0

Зарегистрируйтесь, чтобы проголосовать за пост или написать комментарий

Авторы получают вознаграждение, когда пользователи голосуют за их посты. Голосующие читатели также получают вознаграждение за свои голоса.

Зарегистрироваться
Комментарии (3)
Сортировать по:
Сначала старые