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

Python re.findall () – все, что вам нужно знать

Когда я впервые узнал о регулярных выражениях, я не очень ценил свою силу. Но есть причина, по которой регулярные выражения пережили семь десятилетий технологического разрушения: кодер, которые понимают регулярные выражения, имеют огромное преимущество при работе с текстовыми данными. Они могут написать в одной строке кода, что делает других десятков! Эта статья … Python Re.findall () – Все, что вам нужно знать Подробнее »

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

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

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

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

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

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

Как работает метод findall () в Python?

Re.findall (шаблон, строка) Метод сканирует нить от слева направо , в поисках всех не перекрывающиеся матчи из шаблон . Возвращает Список строк в порядке сопоставления при сканировании строки слева направо.

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

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

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

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

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

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

Re.findall () Метод возвращает список строк. Каждый строковый элемент представляет собой соответствующую подстроку строкового аргумента.

Давайте проверим несколько примеров!

Примеры Re.findall ()

Импорт 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.findall('her', text)
['her', 'her', 'her']

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

Также обратите внимание, что findall () Функция Возвращает список всех совпадающих подстроек. В этом случае это может быть не слишком полезно, потому что мы ищите только точную строку. Но если мы ищем более сложные шаблоны, это может быть действительно очень полезно:

>>> re.findall('\\bf\w+\\b', text)
['frost', 'flower', 'field']

Regex '\\ bf \ w + \\ b' Соответствует всем словам, которые начинаются с персонажа 'f' Отказ

Вы можете спросить: зачем приложить Regex с ведущим и трейлинговым '\\ B' ? Это граничный символ слова, который соответствует пустой строке в начале или в конце слова. Вы можете определить слово как последовательность символов, которые не являются персонажами пробелов или другие разделители, такие как '.:?! .

В предыдущем примере вам нужно избежать границы символа '\ B' Опять же, потому что в строке Python отображение по умолчанию последовательность символов '\ B' это символ обратной косания.

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

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

  • 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.findall () и Re.match ()?

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

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

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

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

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

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

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

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

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

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

Курс Python Regex

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

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

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

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

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

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

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

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