Если вы программист, скорее всего, вы уже знаете, что такое регулярные выражения (regex). Шаблоны регулярных выражений реализованы почти во всех основных языках программирования, но все же мощность и универсальность этих шаблонов не осознаются большинством разработчиков.
Это руководство посвящено регулярным выражениям и их использованию в языке программирования Python.
Что такое регулярные выражения?
Регулярные выражения - это шаблоны, которые помогают пользователю сопоставлять комбинации символов в текстовых файлах и строках. Вы можете использовать регулярные выражения для фильтрации или поиска определенного шаблона в выводе команды или документа.
Существуют различные варианты использования регулярных выражений, наиболее известным из которых является команда grep в Linux. Другие приложения включают фильтрацию информации, такую как извлечение адресов электронной почты и номеров телефонов из дампа данных.
Основная причина, по которой многие разработчики отклоняются от регулярных выражений, - это незнание возможностей сопоставления с образцом. Некоторые даже находят регулярные выражения сбивающими с толку из-за большого количества символов и последовательностей, используемых в шаблонах.
Какой бы ни была причина, регулярные выражения были и будут одним из наиболее важных аспектов программирования, о котором должен знать каждый.
Регулярные выражения: совпадающие символы и последовательности
Regex - это совершенно новый язык сам по себе. Механизм регулярных выражений интерпретирует шаблоны, состоящие из нескольких символов, имеющих определенные значения. Базовые литералы, такие как буквенно-цифровые символы, соответствуют друг другу. Но сложные символы, такие как $, *, +, {и т. Д. помощь в сопоставлении более высокого порядка.
- Звездочка (*): Соответствует предыдущему символу ноль или более раз. Буквальное значение символа будет «Элемент, умноженный в n раз». Например, если регулярное выражение abc *, совпадающими строками будут ab, abc, abcc, abccc, abcccc и т. д. Выражение [до н.э]* будет соответствовать bc, bcbc, bcbc и т. д.
- Плюс (+): Один или несколько раз соответствует предыдущему символу. Работа + характер похож на *, но + символ пропускает образец, если символ не встречается. Например, abc + будет соответствовать abc, abcc, abccc и т. д. но не ab.
- Вопросительный знак (?): Соответствует предыдущему символу ноль или один раз. Например, узор abc? будет соответствовать только ab и abc.
- Труба (|): Используется как двоичный ИЛИ ЖЕ оператор. Соответствует любому из символов, предшествующих и следующих за вертикальной чертой. Например, а | б будет соответствовать либо a, либо b.
- Точка (.): Соответствует персонажу, личность которого неизвестна. Например, a.c будет соответствовать aac, abc, acc, a2c и так далее.
- Морковь (^): Соответствует первому символу в шаблоне. Например, ^ Ра будет соответствовать словам, начинающимся с Ра такие как Rabbit, Raccoon и Random.
- Доллар ($): Соответствует последнему символу в шаблоне. Например, $ будет соответствовать словам, оканчивающимся на ан такие как Ван, Дэн и План.
- Дефис (-): Используется для определения диапазона символов. Например, [0-9] будет соответствовать всем однозначным цифровым символам.
В шаблонах регулярных выражений используются следующие специальные последовательности:
- \ A: Возвращает совпадение, если в начале строки присутствуют следующие символы. Например, \ A будет соответствовать словам, начинающимся с В такие как The, Them, They и т. д.
- \ b: Возвращает совпадение, если символ находится в начале или в конце слова. Например, \ bmad а также сумасшедший \ b будет соответствовать таким словам, как сделал а также кочевник соответственно.
- \ B: Возвращает совпадение, если символ не найден в начале или конце слова.
- \ d: Соответствует числовым символам, присутствующим в строке. Например, /d* будет соответствовать таким числам, как 1, 12, 1232 и т. д.
- \ D: Соответствует нечисловым символам в строке. / D будет соответствовать a, b, c, f и т. д.
- \ s: Соответствует пробелу в тексте.
- \ S: Соответствует непробельному символу в тексте.
- \ w: Возвращает совпадение, если строка содержит буквенно-цифровые символы, включая символы подчеркивания. Например, \ w будет соответствовать a, b, c, d, 1, 2, 3 и т. д.
- \ W: Возвращает совпадение, если строка не содержит буквенно-цифровых символов или знаков подчеркивания.
- \ 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, чтобы научиться лучше использовать этот универсальный язык программирования.
Читать далее
- Программирование
- Программирование
- Python
Дипеш - младший редактор Linux в MUO. Он пишет информационный контент в Интернете более 3 лет. В свободное время он любит писать, слушать музыку и играть на гитаре.
Подписывайтесь на нашу новостную рассылку
Подпишитесь на нашу рассылку, чтобы получать технические советы, обзоры, бесплатные электронные книги и эксклюзивные предложения!
Еще один шаг…!
Пожалуйста, подтвердите свой адрес электронной почты в электронном письме, которое мы вам только что отправили.