Введение

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

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

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

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

Многие языки программирования предоставляют возможности регулярных выражений, встроенные в библиотеки или сторонние библиотеки. Начало работы с регулярным выражением может быть непростым из-за его синтаксиса, но оно, безусловно, стоит вашего времени. Давайте изучим основы, чтобы начать создавать регулярные выражения для наших вариантов использования. В этом руководстве мы будем использовать модуль «re» Python для сопоставления или проверки регулярных выражений. Содержание этого руководства приведено ниже.

Содержание

  • Создание регулярных выражений или regex.
  • Как работают регулярные выражения.
  • переустановить модуль в python.
  • Строительные блоки регулярного выражения с примерами использования python re.
  • Несколько примеров

Создание регулярных выражений или регулярного выражения

Шаблон регулярного выражения состоит из простых символов, таких как «regex», или комбинации простых и специальных символов, таких как «reg.*ex\w*». Пример «regex» здесь — очень простой шаблон, просто соответствующий тексту «regex». Приведенный выше шаблон «регулярное выражение» соответствует комбинациям символов в строках; только когда встречается точная последовательность «regex» (все символы вместе и в таком порядке). Такое совпадение успешно сопоставляется со строками «Учебник по изучению регулярных выражений?» и «регулярное выражение», в обоих случаях совпадение с подстрокой «регулярное выражение».

Когда для поиска совпадения требуется нечто большее, чем прямое совпадение, например совпадение как «regex», так и «регулярных выражений», в шаблон включаются специальные символы. Выражение /reg.*ex\w*/ соответствует как «регулярному выражению», так и «регулярным выражениям» в строке. Знак «.», за которым следует «*» после «reg», означает «соответствует любому символу (кроме разделителей строк)». «\w», за которым следует «*», соответствует любому буквенно-цифровому символу. '*' Соответствует ноль и неограниченное количество раз, максимально возможное количество раз предшествующему выражению.

В следующих темах мы подробно рассмотрим регулярные выражения с большим количеством примеров и шаблонов с использованием python re.

Как работают регулярные выражения

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

Также существует два типа механизмов регулярных выражений: механизмы, ориентированные на текст, и механизмы, ориентированные на регулярные выражения. движок, ориентированный на регулярные выражения, всегда будет возвращать самое левое совпадение, даже если «лучшее» совпадение может быть найдено позже. При применении регулярного выражения к строке движок запустится с первого символа строки. Он попробует все возможные перестановки регулярного выражения для первого символа. Только если все возможности были испробованы и признаны неудачными, движок продолжит работу со вторым символом в тексте. Опять же, он попробует все возможные перестановки регулярного выражения точно в том же порядке. В результате движок, ориентированный на регулярное выражение, вернет самое левое совпадение.

В этом уроке мы будем использовать модуль python «re», который использует движок, ориентированный на регулярные выражения.

повторный модуль в питоне

Сопоставление регулярных выражений можно выполнить с помощью python re, который поставляется как встроенный модуль с установкой python. Конечно, есть и другие библиотеки, как упоминалось ранее, в этом руководстве мы будем придерживаться python «re».

Модуль re предоставляет различные методы для работы с регулярными выражениями. Прежде чем объяснять методы, давайте рассмотрим простой пример операции поиска с использованием python re.

Здесь мы импортировали модуль re и использовали метод поиска, предоставляемый модулем re. Метод поиска возвращает объект поиска, который содержит результаты в виде групп. Группы и сведения о шаблоне обсуждаются в разделе «Создание блоков регулярного выражения с примерами использования python re» в этом руководстве. При печати группы — match.group() вывод печатается как «регулярные выражения».

Также обратите внимание, что шаблон регулярного выражения здесь написан между одинарными кавычками, которые следуют за буквой «r». Это способ описания необработанных строк в python, т.е., например, если перед строкой поставить «r» в python, обратная косая черта «\» не считается управляющей последовательностью. Не то чтобы это синтаксис Python, а не часть регулярного выражения.

Выше мы видели пример использования метода поиска Python. Теперь давайте посмотрим на несколько других функций, предоставляемых re.

Мы будем использовать некоторые из них в наших следующих примерах. Объяснения с примерами для методов, которые мы используем в этом руководстве, приведены ниже.

1. перекомпилировать (шаблон, флаги = 0)

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

Вместо того, чтобы предоставлять регулярное выражение непосредственно методам re в качестве аргумента. Мы можем скомпилировать регулярное выражение, чтобы возвращать объект и вызывать методы re из объекта. Пример приведен ниже:

2. re.поиск(шаблон, строка, flags=0)

Мы видели использование функциональности re search() в приведенном выше примере. Метод search() просматривает всю строку и возвращает объект совпадения при первом появлении. Он возвращает None, если ни одна позиция в строке не соответствует шаблону.

3. re.соответствие(шаблон, строка, flags=0)

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

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

4. re.findall(шаблон, строка, flags=0)

Метод «findall», как следует из названия, возвращает все неперекрывающиеся совпадения шаблона в строке в виде списка строк. строка сканируется слева направо, и совпадения возвращаются в том порядке, в котором они были найдены. Если в шаблоне присутствует одна или несколько групп, он возвращает список групп. Пустые совпадения включаются в результат.

Обратите внимание, что в отличие от метода поиска, который возвращает только одно вхождение, «findall»() ищет все вхождения.

повторно флаги

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

  • re.ASCII — Сопоставление только с ASCII вместо полного сопоставления с Unicode.
  • re.DEBUG — Показать отладочную информацию о скомпилированном выражении.
  • re.IGNORECASE — Выполняет сопоставление без учета регистра.
  • re.LOCALE — соответствие без учета регистра в зависимости от текущей локали.
  • re.MULTILINE — $ соответствует концу строки (а не только концу строки), а ^ соответствует началу любой строки.
  • re.DOTALL — Делает точку (точку) соответствующей любому символу, включая новую строку.
  • re.VERBOSE — Разрешает более читаемый синтаксис регулярных выражений.

«Строительные блоки регулярных выражений с примерами использования python re» рассматриваются во второй части этого вводного документа по регулярным выражениям.