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

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

Что такое регулярные выражения?

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

Существуют различные варианты использования регулярных выражений, наиболее известным из которых является команда grep в Linux. Другие приложения включают фильтрацию информации, такую ​​как извлечение адресов электронной почты и номеров телефонов из дампа данных.

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

instagram viewer

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

Регулярные выражения: совпадающие символы и последовательности

Regex - это совершенно новый язык сам по себе. Механизм регулярных выражений интерпретирует шаблоны, состоящие из нескольких символов, имеющих определенные значения. Базовые литералы, такие как буквенно-цифровые символы, соответствуют друг другу. Но сложные символы, такие как $, *, +, {и т. Д. помощь в сопоставлении более высокого порядка.

  1. Звездочка (*): Соответствует предыдущему символу ноль или более раз. Буквальное значение символа будет «Элемент, умноженный в n раз». Например, если регулярное выражение abc *, совпадающими строками будут ab, abc, abcc, abccc, abcccc и т. д. Выражение [до н.э]* будет соответствовать bc, bcbc, bcbc и т. д.
  2. Плюс (+): Один или несколько раз соответствует предыдущему символу. Работа + характер похож на *, но + символ пропускает образец, если символ не встречается. Например, abc + будет соответствовать abc, abcc, abccc и т. д. но не ab.
  3. Вопросительный знак (?): Соответствует предыдущему символу ноль или один раз. Например, узор abc? будет соответствовать только ab и abc.
  4. Труба (|): Используется как двоичный ИЛИ ЖЕ оператор. Соответствует любому из символов, предшествующих и следующих за вертикальной чертой. Например, а | б будет соответствовать либо a, либо b.
  5. Точка (.): Соответствует персонажу, личность которого неизвестна. Например, a.c будет соответствовать aac, abc, acc, a2c и так далее.
  6. Морковь (^): Соответствует первому символу в шаблоне. Например, ^ Ра будет соответствовать словам, начинающимся с Ра такие как Rabbit, Raccoon и Random.
  7. Доллар ($): Соответствует последнему символу в шаблоне. Например, $ будет соответствовать словам, оканчивающимся на ан такие как Ван, Дэн и План.
  8. Дефис (-): Используется для определения диапазона символов. Например, [0-9] будет соответствовать всем однозначным цифровым символам.

В шаблонах регулярных выражений используются следующие специальные последовательности:

  1. \ A: Возвращает совпадение, если в начале строки присутствуют следующие символы. Например, \ A будет соответствовать словам, начинающимся с В такие как The, Them, They и т. д.
  2. \ b: Возвращает совпадение, если символ находится в начале или в конце слова. Например, \ bmad а также сумасшедший \ b будет соответствовать таким словам, как сделал а также кочевник соответственно.
  3. \ B: Возвращает совпадение, если символ не найден в начале или конце слова.
  4. \ d: Соответствует числовым символам, присутствующим в строке. Например, /d* будет соответствовать таким числам, как 1, 12, 1232 и т. д.
  5. \ D: Соответствует нечисловым символам в строке. / D будет соответствовать a, b, c, f и т. д.
  6. \ s: Соответствует пробелу в тексте.
  7. \ S: Соответствует непробельному символу в тексте.
  8. \ w: Возвращает совпадение, если строка содержит буквенно-цифровые символы, включая символы подчеркивания. Например, \ w будет соответствовать a, b, c, d, 1, 2, 3 и т. д.
  9. \ W: Возвращает совпадение, если строка не содержит буквенно-цифровых символов или знаков подчеркивания.
  10. \ Z: Соответствует символам в конце строки. Например, конец \ Z будет соответствовать словам, оканчивающимся на конец такие как сгибание, исправление, склонение и т.

Методы Python для регулярных выражений

В Python повторно Библиотека предоставляет все необходимые функции и утилиты, необходимые для реализации регулярных выражений в ваших программах. Вам не нужно загружать библиотеку с помощью pip, поскольку она поставляется с предустановленным интерпретатором Python.

Чтобы импортировать повторно библиотеки на Python, добавьте в свой скрипт следующий код:

импорт ре

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

Матч()

В re.match () Метод в Python возвращает объект регулярного выражения, если программа находит совпадение в начале указанной строки. Эта функция принимает два основных аргумента:

re.match (шаблон, строка)

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

Взгляните на приведенный ниже фрагмент кода.

импорт ре
match = re.match (r'Word ', «Это предложение содержит слово»)
печать (совпадение)

В р символ перед строкой обозначает необработанную строку.

Выход:

Никто

Вышеупомянутый код возвращает Никто так как Слово не присутствовал в начале строки.

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

импорт ре
match = re.match (r'Word ', «Слово трудно читать»)
печать (match.group (0))

Выход:

Слово

Поиск()

В исследовать() Метод принимает те же аргументы, что и re.match (). Хотя match () возвращает только совпадения, присутствующие в начале строки, поиск() вернет совпадения, найденные по любому индексу в строке.

импорт ре
match = re.search (r'Word ', "Это предложение содержит слово. Слово трудно читать. ")
печать (match.group (0))

Обратите внимание, что матч() а также поиск() методы вернут только одно совпадение с образцом. В вышеупомянутом коде Слово появляется дважды. Но поиск() функция будет соответствовать только первому вхождению слова.

Слово

Найти все()

Как вы уже догадались, найти все() метод возвращает все возможные совпадения в строке.

импорт ре
match = re.search (r'Word ', "Это предложение содержит слово. Слово трудно читать. ")
за элем в матче:
печать (элемент)

Вместо того, чтобы возвращать объект регулярного выражения, функция findall () возвращает список всех совпадений. Вы можете перебирать список, используя для цикла в Python.

Расколоть()

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

импорт ре
split = re.split (r'and ', «Это слово, это и это разные.»)
печать (разделение)

Выход:

[«Это слово», «то», «это другое».]

Sub ()

В sub () Метод позволяет пользователю заменить конкретное слово на шаблон. Требуются следующие аргументы.

re.sub (шаблон, замена, строка)

Рассмотрим этот фрагмент кода:

импорт ре
result = re.sub (r'and ',' or ', «Дэйв и Гарри должны быть наказаны.»)
печать (результат)

Выход:

Дэйв или Гарри должны быть наказаны.

Скомпилировать ()

В re.compile () метод в повторно библиотека позволяет пользователю хранить в памяти скомпилированную версию шаблона регулярного выражения. Затем, используя скомпилированный объект, пользователь может быстро отфильтровать указанный текстовый дамп на соответствие шаблонам.

импорт ре
шаблон = re.compile ('Python')
match = pattern.findall ("Python - отличный язык для написания скриптов. Python легко выучить. ")
печать (совпадение)

Эта функция в основном используется для сохранения шаблонов, которые являются ресурсоемкими и требуют много времени для выполнения. Предварительная компиляция и сохранение паттерна как объекта решает эту проблему.

Используйте возможности регулярных выражений с помощью Python

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

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

Электронное письмо
Шпаргалка по Python RegEx для начинающих программистов

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

Читать далее

Похожие темы
  • Программирование
  • Программирование
  • Python
Об авторе
Дипеш Шарма (Опубликовано 41 статья)

Дипеш - младший редактор Linux в MUO. Он пишет информационный контент в Интернете более 3 лет. В свободное время он любит писать, слушать музыку и играть на гитаре.

Ещё от Deepesh Sharma

Подписывайтесь на нашу новостную рассылку

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

Еще один шаг…!

Пожалуйста, подтвердите свой адрес электронной почты в электронном письме, которое мы вам только что отправили.

.