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

Python Regex Поиск

https://youtu.be/mv2vvpugypc Когда я впервые узнал о регулярных выражениях, я не ценил свою силу. Но есть причина, по которой регулярные выражения пережили семь десятилетий технологического разрушения: кодер, которые понимают регулярные выражения, имеют огромное преимущество при работе с текстовыми данными. Они могут написать в одной строке кода, что делает других десятков! Эта статья … Python Regex Поиск Подробнее »

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

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

Эта статья все о Поиск () Метод Python Re библиотека Отказ Узнать о простых в использовании, но менее мощных findall () Метод, который возвращает список строковых совпадений, проверьте нашу статью о похоже findall () Метод Отказ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

>>> m = re.search('h...o', 'hello world')
>>> m.start()
0
>>> m.end()
5
>>> 'hello world'[m.start():m.end()]
'hello'

В первой строке вы создаете объект MACK M, используя Re.Search () метод. Шаблон H ... O ' соответствует строке «Hello World» В начале позиции 0. Вы используете пункт начала и конца для доступа к подстроке, соответствующему шаблону (используя популярные Техника Python нарезки ).

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

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

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

>>> import re
>>> text = '''
    Ha! let me see her: out, alas! he's cold:
    Her blood is settled, and her joints are stiff;
    Life and these lips have long been separated:
    Death lies on her like an untimely frost
    Upon the sweetest flower of all the field.
'''

Допустим, вы хотите найти текст для строки «Ее»:

>>> re.search('her', text)

Первый аргумент – это шаблон найден. В нашем случае это строка «Ее» Отказ Второй аргумент – это текст, который будет проанализирован. Вы сохраните многострочную строку в переменной тексте – поэтому вы принимаете это как второй аргумент. Вам не нужно определять дополнительный третий аргумент Флаги из Поиск () Способ, потому что вы в порядке с поведением по умолчанию в этом случае.

Посмотрите на выход: Это объект матча! Объект Match дает диапазон матча – это индексы начала и стоп матча. Мы также можем напрямую доступ к этим границам, используя Start () и Стоп () Методы объекта матча:

>>> m = re.search('her', text)
>>> m.start()
20
>>> m.end()
23

Проблема в том, что Поиск () Способ извлекает только первое возникновение шаблона в строке. Если вы хотите найти все совпадения в строке, вы можете использовать findall () Метод повторной библиотеки.

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

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

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

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

>>> text = 'Python is superior to Python'
>>> re.search('Py...n', text)

>>> re.findall('Py...n', text)
['Python', 'Python']

Строка «Python превосходит Python» содержит два вхождения «Питон» Отказ Поиск () Способ возвращает только объект совпадения первого вхождения. findall () Метод возвращает список всех возникновений.

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

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

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

>>> text = 'Slim Shady is my name'
>>> re.search('Shady', text)

>>> re.match('Shady', text)
>>>

Re.Search () Метод извлекает совпадение «Shady» подстрока как объект матча. Но если вы используете Re.match () Метод, нет совпадения и возвращаемого значения, потому что подстрока «Shady» не происходит в начале строки «Тонкий тенистый - мое имя» Отказ

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

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

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

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

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

Синтаксис Имея в виду
решающее значение Ascii Если вы не используете этот флаг, специальные символы Regex Python \ W, \ W, \ b, \ b, \ d, \ d, \ s и \ s будут соответствовать символам Unicode. Если вы используете этот флаг, эти специальные символы будут соответствовать только символам ASCII – как указано имя.
решающее значение A Так же, как ре. Ascii
Re.debug. Если вы используете этот флаг, Python распечатает некоторую полезную информацию в оболочку, которая помогает отладить ваше регулярное выражение.
решающее значение INGLORECASE. Если вы используете этот флаг, двигатель Regex будет выполнять совпадение в случае сопоставления. Поэтому, если вы ищете [A-Z], он также будет соответствовать [A-Z].
решающее значение I Так же, как ре. INGLORECASE.
решающее значение Локаль Не используйте этот флаг – когда-либо. Он обесценился – идея состояла в том, чтобы выполнить сопоставление нечувствительности к регистру в зависимости от вашей текущей местности. Но это не надежно.
решающее значение L Так же, как ре. Локаль
решающее значение Многолетний Этот флаг включает в следующую функцию: начало строки Regex ‘^’ совпадает в начале каждой строки (а не только в начале строки). То же самое относится и к концу строки Regex ‘$’, который сейчас соответствует также в конце каждой строки в многострочной строке.
решающее значение M Так же, как ре. Многолетний
решающее значение Дозал Без использования этого флага точечное регулярное выражение. ‘ Соответствует всем персонажам, кроме символа Newline ‘\ N’. Переключите этот флаг, чтобы действительно сопоставить все символы, включая новенький символ.
решающее значение S Так же, как ре. Дозал
решающее значение ПОДРОБНЫЙ Чтобы улучшить читаемость сложных регулярных выражений, вы можете позволить комментариям и (многострочному) форматированию самого Regeex. Это возможно с этим флагом: все пробелы и строки, которые начинаются с символа «#», игнорируются в Regex.
решающее значение X Так же, как ре. ПОДРОБНЫЙ

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

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

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

Обертывание

Эта статья представила Re.Search (шаблон, строка) Метод, который пытается сопоставить первое возникновение рисунка Regex в заданной строке и возвращает объект совпадения.

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

Затем присоединитесь к моим списку электронной почты «Coffee Break Python» десятки тысяч амбициозных кодеров!

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

Достаточно теории, давайте познакомимся!

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

Практические проекты – это то, как вы обостряете вашу пилу в кодировке!

Вы хотите стать мастером кода, сосредоточившись на практических кодовых проектах, которые фактически зарабатывают вам деньги и решают проблемы для людей?

Затем станьте питоном независимым разработчиком! Это лучший способ приближения к задаче улучшения ваших навыков Python – даже если вы являетесь полным новичком.

Присоединяйтесь к моему бесплатным вебинаре «Как создать свой навык высокого дохода Python» и посмотреть, как я вырос на моем кодированном бизнесе в Интернете и как вы можете, слишком от комфорта вашего собственного дома.

Присоединяйтесь к свободному вебинару сейчас!

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

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

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

Оригинал: “https://blog.finxter.com/python-regex-search/”