Регулярные выражения для развлечения и прибыли

Регулярные выражения имеют плохую репутацию. Они твердые, непрозрачные, ломают вещи.

Использование встроенных модулей для сопоставления строк подходит для некоторых задач, но вы упустите возможности и гибкость, которые дает написание собственного регулярного выражения. (Если вы действительно преданы делу, вы даже можете заставить их заниматься арифметикой.)

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

Сделайте свои струны более универсальными

F-строки Python просто фантастичны - они удобочитаемы, лаконичны и менее подвержены ошибкам, чем старый метод% -форматирования.

Вы можете получить от них еще больше с помощью регулярного выражения. Префикс вашего выражения с помощью r вместо «raw», что указывает Python игнорировать все escape-символы.

Комбинируйте r с префиксом f, когда вам нужно поменять местами части вашего регулярного выражения. Вы можете использовать это, чтобы писать более короткие циклы или удерживать место для значения, которое у вас еще нет или которое нужно компилировать. (Вот пример последнего случая.)

Точный поиск и замена текста

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

Здесь я использовал эту технику, чтобы сканировать предложения из новостных статей и создавать хэштеги из слова «инопланетянин».

Получайте ценную информацию из зашумленных данных

Я использую регулярное выражение в повседневной жизни, чтобы упростить другие задачи (да, действительно). Например, мне нужен список пакетов из файла requirements.txt, но мне не нужны их конкретные версии.

Regex избавил от утомительного извлечения имен пакетов вручную. Вы можете увидеть, как я это сделал на Regex101. Мне нравится использовать для этого BBEdit (ранее TextWrangler), но вы также можете использовать функцию экспорт совпадений в Regex101. Веб-сайт дает вам дополнительное преимущество отладки вашего выражения в реальном времени.

Время, потраченное на изучение регулярного выражения, окупается в несколько раз, избавляя вас от утомительного поиска. Я использовал регулярное выражение для извлечения регулярных выражений из других скриптов Python и grepping для файлов в командной строке.

Тренируйте свой мозг и наслаждайтесь трудностями

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

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

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