Рубрики
Без рубрики

Python Regex Fullmatch.

Почему регулярные выражения пережили семь десятилетий технологического разрушения? Поскольку кодеры, которые понимают регулярные выражения, имеют огромное преимущество при работе с текстовыми данными. Они могут написать в одной строке кода, что делает других десятков! Эта статья все о методе Re.fullmatch (Pattern, String) из библиотеки Python Re. Есть три аналогичных метода … Python Regex FullMatch Подробнее »

Автор оригинала: Chris.

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

Эта статья все о Re.fullmatch (шаблон, строка) Метод Python Re Библиотека Отказ Есть три аналогичных метода, которые помогут вам использовать регулярные выражения:

  • Re.findall (шаблон, строка) Метод возвращает Список строковых матчей Отказ Проверьте Наше руководство в блоге Отказ
  • Re.Search (шаблон, строка) Метод возвращает матч объект из Первый матч Отказ Проверьте Наше руководство в блоге Отказ
  • Re.match (шаблон, строка) Метод возвращает матч объект Если регеекс совпадает на Начало строки Отказ Проверьте Наше руководство в блоге Отказ

Связанная статья: Python Regex SuperPower – Ultimate Guide

Так как же Re.fullmatch () Метод работы? Давайте изучим спецификацию.

Как работает Re.fullmatch () в Python?

Re.fullmatch (шаблон, строка) Метод возвращает объект совпадения, если шаблон соответствует всему строка Отказ Объект матча содержит полезную информацию, такую как соответствующие группы и позиции. Дополнительный третий аргумент Флаги Включает настройку двигателя Regex, например, игнорировать капитализацию.

Спецификация :

re.fullmatch(pattern, string, flags=0)

Re.fullmatch () Метод имеет до трех аргументов.

  • шаблон : Регулярное выражение выражения, которое вы хотите сопоставить.
  • строка : Строка, которую вы хотите искать шаблон.
  • Флаги (Необязательный аргумент): более продвинутый модификатор, который позволяет настроить поведение функции. Хотите знать Как использовать эти флаги? Проверьте эту подробную статью на блог Finxter.

Мы рассмотрим их более подробно позже.

Возвращаемое значение:

Метод Re.fullmatch ( ) Возвращает объект совпадения. Вы можете спросить (и правильно):

Что такое объект матча?

Если регулярное выражение соответствует части вашей строки, есть много полезной информации, которая поставляется с ней: какая точная позиция матча? Какие группы Regex были сопоставлены – и где?

Матч объект Это простая обертка для этой информации. Некоторые методы Regex повторной упаковки в Python, такие как FullMatch () -Автоматически создать объект совпадения на первом шаблоне.

Вы хотите освоить сверхдержаву Regeex? Проверьте мою новую книгу Самый умный способ изучать регулярные выражения в Python С инновационным 3-ступенчатым подходом для активного обучения: (1) Изучение книги главы, (2) Решите головоломки кода и (3) Смотреть воспроизведение главы видео.

На данный момент вам не нужно подробно исследовать объект Match. Просто знайте, что мы можем получить доступ к началу и конечным положениям матча в строке, вызвав методы M.START () и M.end () на объекте матча м :

>>> m = re.fullmatch('h...o', 'hello')
>>> m.start()
0
>>> m.end()
5

В первой строке вы создаете объект MACK M, используя Re.fullmatch () метод. Шаблон H ... O ' соответствует строке «Привет» в начале позиции 0 и конечное положение 5. Но обратите внимание, что как FullMatch () Метод всегда пытается сопоставить всю строку, M.START () Метод всегда будет возвращать ноль.

Теперь вы знаете цель объекта матча в Python. Давайте проверим несколько примеров Re.fullmatch () !

Направленный пример для Re.fullmatch ()

Во-первых, вы импортируете Re Модуль и создайте текстовую строку для поиска шаблонов Regex:

>>> import re
>>> text = '''
Call me Ishmael. Some years ago--never mind how long precisely
--having little or no money in my purse, and nothing particular
to interest me on shore, I thought I would sail about a little
and see the watery part of the world.
'''

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

>>> re.fullmatch('Call(.|\n)*', text)
>>> 

Первый аргумент – это шаблон, который можно найти: «Вызов (. | \ N) * ' Отказ Второй аргумент – это текст, который будет проанализирован. Вы сохранили многострочную строку в переменной текст -СО, вы принимаете это как второй аргумент. Третий аргумент Флаги из FullMatch () Метод не является обязательным, и мы пропускаем его в коде.

Там нет вывода! Это означает, что Re.fullmatch () Метод не вернул объект матча. Почему? Потому что в начале строки нет матча для «Звоните» часть регеляции. Regex начинается с пустой строки!

Так как мы можем это исправить? Просто, соответствуя новой линии символа '\ N' в начале строки.

>>> re.fullmatch('\nCall(.|\n)*', text)
 Отказ Это соответствует всему тексту, поэтому результатом является объект матча. Обратите внимание, что существуют 229 подходящих положений, поэтому строка, включенная в результате объект Match, является только префиксом всей подходящей строки. Этот факт часто упускается из виду кодеров для начинающих. 

В чем разница между Re.fullmatch () и Re.match ()?

Методы Re.fullmatch () и Re.match (шаблон, строка) Оба возвращают объект матча. Оба попытки соответствовать в начале строки. Единственное отличие в том, что Re.fullmatch () Также пытаются также сопоставить конец строки: он хочет сопоставить всю строку!

Вы можете увидеть эту разницу в следующем коде:

>>> text = 'More with less'
>>> re.match('More', text)

>>> re.fullmatch('More', text)
>>> 

Re.match («Еже», текст) Метод соответствует строке «Больше» В начале строки «Больше с меньшей» Отказ Но Re.fullmatch («Еже», текст) Метод не соответствует цельному тексту. Поэтому он возвращает Нет Объект - ничего не напечатано в вашу оболочку!

В чем разница между Re.fullmatch () и Re.findall ()?

Существует две различия между Re.fullmatch (шаблон, строка) и Re.findall (шаблон, строка) Методы:

  • Re.fullmatch (шаблон, строка) Возвращает объект совпадения во время Re.findall (шаблон, строка) Возвращает список сопоставленных строк.
  • Re.fullmatch (шаблон, строка) может соответствовать только всей строке, в то время как Re.findall (шаблон, строка) Может вернуть несколько совпадений в строке.

Оба можно увидеть в следующем примере:

>>> text = 'the 42th truth is 42'
>>> re.fullmatch('.*?42', text)

>>> re.findall('.*?42', text)
['the 42', 'th truth is 42']

Обратите внимание, что Regex . *? соответствует произвольному количеству персонажей, но он пытается потреблять как можно меньше персонажей. Это называется «Не жадные» Матч ( *? Оператор). FullMatch () Способ возвращает только объект матча, который соответствует всей строке. findall () Метод возвращает список всех возникновений. Как матч не жадный, он находит два таких матча.

В чем разница между Re.fullmatch () и Re.Search ()?

Методы Re.fullmatch () и Re.Search (шаблон, строка) Оба возвращают объект матча. Тем не менее, Re.fullmatch () попытки сопоставить всю строку во время Re.Search () Соответствует в любом месте строки.

Вы можете увидеть эту разницу в следующем коде:

>>> text = 'Finxter is fun!'
>>> re.search('Finxter', text)

>>> re.fullmatch('Finxter', text)
>>> 

Re.Search () Метод извлекает совпадение 'Finxter' подстрока как объект матча. Но Re.fullmatch () Метод не имеет возвращаемого значения, потому что подстрока 'Finxter' не соответствует всей строке 'Finxter - это весело! Отказ

Как использовать дополнительный аргумент флага?

Как вы видели в спецификации, FullMatch () Метод поставляется с необязательным третьим «Флаг» Аргумент:

re.fullmatch(pattern, string, flags=0)

Какова цель аргумента флагов?

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

Синтаксис Значение
Re.ascii. Если вы не используете этот флаг, специальные символы Regex Python \ W, \ W, \ b, \ b, \ d, \ d, \ s и \ s будут соответствовать символам Unicode. Если вы используете этот флаг, эти специальные символы будут соответствовать только символам ASCII - как указано имя.
реаяна Так же, как Re.Ascii
re.debug. Если вы используете этот флаг, Python распечатает некоторую полезную информацию в оболочку, которая помогает отладить ваше регулярное выражение.
Re.ignorecase. Если вы используете этот флаг, двигатель Regex будет выполнять совпадение в случае сопоставления. Итак, если вы ищете класс символов [A-Z], он также будет соответствовать [A-Z].
Re.i. Так же, как Re.ignoRecase
Re.Locale Не используйте этот флаг - когда-либо. Он обесценился - идея состояла в том, чтобы выполнить сопоставление нечувствительности к регистру в зависимости от вашей текущей местности. Но это не надежно.
решающее значение Так же, как Re.Locale
Re.multiline. Этот флаг включает в следующую функцию: начало строки Regex '^' совпадает в начале каждой строки (а не только в начале строки). То же самое относится и к концу строки Regex '$', который сейчас соответствует также в конце каждой строки в многострочной строке.
решающее значение Так же, как Re.multiline.
re.dotall. Без использования этого флага точечное регулярное выражение. ' Соответствует всем персонажам, кроме символа Newline '\ N'. Переключите этот флаг, чтобы действительно сопоставить все символы, включая новенький символ.
республика Так же, как Re.dotall.
Re.verbose. Чтобы улучшить читаемость сложных регулярных выражений, вы можете позволить комментариям и (многострочному) форматированию самого Regeex. Это возможно с этим флагом: все пробелы и строки, которые начинаются с символа «#», игнорируются в Regex.
re.x. Так же, как Re.verbose

Вот как бы вы использовали его в практическом примере:

>>> text = 'Python is great!'
>>> re.search('PYTHON', text, flags=re.IGNORECASE)

Хотя ваше регулярное выражение «Питон» Это все шапки, мы игнорируем капитализацию, используя флаг Re.ignoRecase Отказ

Связанная статья: Флаги Python Regex [Ultimate Guide]

Методы Regex Обзор Видео - Re.findall () vs. re.search () vs. re.match () vs. re.fullmatch ()

Куда пойти отсюда?

Эта статья представила Re.fullmatch (шаблон, строка) Метод, который пытается сопоставить всю строку - и возвращает объект совпадения, если он преуспевает или Никто Если это не так.

Обучение Python сложно. Но если вы обманываете, это не так сильно, как должно быть:

Скачать 8 бесплатных читов Python сейчас!

Инженеры Google, Facebook и Amazon являются регулярными мастерами. Если вы хотите стать одним, а также проверить нашу новую книгу: Самый умный способ изучить Python Regex (Amazon Kindle/Print, открывается на новой вкладке) Отказ

Курс Python Regex

Инженеры Google являются регулярными мастерами. Система поисковой системы Google - это массивная Текстово-обработка двигателя Это извлекает значение из триллионов веб-страниц.

Инженеры Facebook являются регулярными мастерами экспрессии. Социальные сети, такие как Facebook, WhatsApp, и Instagram Подключите людей через Текстовые сообщения Отказ

Инженеры Amazon являются регулярными мастерами экспрессии. Ecommerce Giants корабля продуктов на основе Описания текстовых продуктов Отказ Регулярные выражения правит игре, когда текстовая обработка соответствует информатике.

Если вы тоже хотите стать регулярным мастером выражения, проверьте Самый полный курс Python Regex на планете:

Работая в качестве исследователя в распределенных системах, доктор Кристиан Майер нашел свою любовь к учению студентов компьютерных наук.

Чтобы помочь студентам достичь более высоких уровней успеха Python, он основал сайт программирования образования Finxter.com Отказ Он автор популярной книги программирования Python One-listers (Nostarch 2020), Coauthor of Кофе-брейк Python Серия самооставленных книг, энтузиаста компьютерных наук, Фрилансера и владелец одного из лучших 10 крупнейших Питон блоги по всему миру.

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