Хирьянов Т.Ф. - Основы программирования и анализа данных на Python - 11. ООП
Регулярные выражения в Python. Полное объяснение. Сохраняй 💾
Что такое регулярное выражение? Для чего используется Regular Expressions в Python? Регулярное выражение (Regular Expression, RegEx) — это мощный, гибкий и эффективный инструмент для сопоставления текста на основе заранее определенного шаблона. Т.е. регулярные выражения позволяют найти строки или наборы строк в тексте, используя специализированный синтаксис, с помощью которого описывается шаблон для поиска. Универсальные шаблоны регулярных выражений напоминают миниатюрный язык программирования, который предназначен для описания и разбора текста...
🗒 Регулярные выражения для задач NLP в Python. Часть1 Рассморим основные функции Python-модуля re. Регулярные выражения - это набор символов, который определяет паттерн для поиска в тексте. Например, в задачах NLP можно использовать Python-библиотеку Yargy для поиска именованных сущностей. Но использование выражений может вызвать неоднозначность, так как выражения, содержащие искомый паттерн, также будут найдены. В Python модуль re используется для работы с регулярными выражениями и содержит 4 основные функции: search, match, findall, finditer и sub. Первые четыре функции имеют одинаковую сигнатуру и принимают на вход шаблон и выражение, а функция sub дополнительно требует строку замены. re.search() – находит первое вхождение фрагмента в любом месте и возвращает объект match. Если в строке есть другие фрагменты, соответствующие запросу, re.search их проигнорирует. import re expr = 'i love Data Science' pattern = 'love' print(re.search(pattern, expr)) <re.Match object; span=(2, 6), match='love'> Обратите внимание, что функция search находит только первый попавшийся шаблон, дальше она уже не смотрит: expr = 'I love data science, i love @data_analysis_ml' print( re.search(pattern, expr)) <re.Match object; span=(2, 6), match='love'> Нельзя забывать, что шаблон представляет собой последовательность символов, а не сами слова. Например, как можно найти последовательность "love" в составном слове в Python, показано ниже. expr = 'So many lovers re.search('love', expr) Как найти все вхождения при помощи findall и finditer. В отличие от функции search, две другие функции findall и finditer найдут все вхождения. Разница между findall и finditer заключается в том, что первый возвращает список (list), а второй возвращает итератор (iterator), который мы обсудили ранее. Возвращаясь к предыдущему примеру, регулярное выражение для обнаружения всех вхождений в Python будет иметь следующий вид: expr = 'I love data science, I love @data_analysis_ml' re.findall('love', expr) ['love', 'love'] re.finditer('love', expr) <callable_iterator object at 0x7efd1caf6b60> Проверяем начало строки с помощью функции match. Функция match проверяет начало строки на соответствие шаблону. Пример выше не начинается с "love", поэтому эта функция вернет значение None. С другой стороны, если выражение начинается с шаблона, функция match вернет объект Match. Рассмотрите следующие регулярные выражения в Python: expr = 'i love Data Science' re.match('Data', expr) None re.match('love', expr) is None True Исключаем шаблон из строки с sub Ещё одной полезной функцией Python-модуля re является sub. Она необходима, когда один шаблон нужно заменить на другой и пригодится для подготовки текстов перед применением NLP-методов в Python, например, для избавления от всех цифр, знаков препинания и символов. К сигнатуре этой функции добавляется аргумент repl — на какую строку заменяем. Ниже регулярные выражения в Python это демонстрируют. Обратите внимание, что sub возвращает строку, поэтому их стоит переприсвоить. expr = 'i love Data Science' pattern = 'love' repl = 'hate' re.sub(pattern, repl, expr) 'i hate Data Science' Также отметим, что функция заменяет все вхождения. Если требуется ограничить это число, то оно указывается в аргументе count. re.sub(pattern, repl, expr, count=1) ▪шпаргалка по регулярным выражениям @machinelearning