Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
pythono
7 лет назад

Уроки Python 18 // Регулярные выражения (часть 2)


Часто нам нужно найти какой-то элемент строки, окруженный двумя другими элементами. Например, это может быть url адреса ссылок html кода. Для того, чтобы выделить ту часть шаблона, которую нужно вернуть, используются скобки. Приведем пример, в котором получим все url адреса ссылок из какого-то кусочка html кода.

import re
string='Вы можете посмотреть карту сайта
<a href="https://map.php">тут</a>. Посетите также <a href="https://best.php">раздел</a> с самыми интересными статьями'
pattern=r'href="(.+?)"'
result=re.findall(pattern,string)
print(result)

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

['map.php', 'best.php']

Следует немного пояснить, что мы сделали. Мы составили шаблон того, что мы ищем pattern=r'href="(.+?)"' - в этом шаблоне искомая строка начинается с href=" и заканчивается еще одной двойной кавычкой. Скобки нужны для того, чтобы указать какую часть искомого шаблона мы хотим получить в переменную result. Точка внутри скобок указывает, что часть шаблона в скобках может быть любыми символами, кроме символа новой строки. Плюсик и вопросительный знак применяется, чтобы указать что мы ищем ноль или более подходящих под шаблон строк.

Кроме поиска мы можем также осуществлять замену строк соответствующих шаблонов на какие-то другие строки. Например, давайте попробуем удалить из html кода все теги. Для этого используется команда:

re.sub(pattern,'на что заменять шаблон',string)

Составим программу:

import re
string='Вы можете посмотреть карту сайта
<a href="https://map.php">тут</a>. Посетите также <a href="https://best.php">раздел</a> с самыми интересными статьями'
pattern=r'<(.+?)>'
result=re.sub(pattern,'',string)
print(result)

Программа напечатает нашу строку уже без наличия в ней тегов:

Вы можете посмотреть карту сайта тут. Посетите также раздел с самыми интересными статьями.

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

https://regex101.com/


Подписывайтесь на мой блог, ставьте апвоут, будет еще много интересного!

54
3.269 GOLOS
На Golos с August 2017
Комментарии (4)
Сортировать по:
Сначала старые