Поиск всех совпадений с помощью re.findall
Модуль re в Python предоставляет мощные инструменты для работы с регулярными выражениями. Одной из самых часто используемых функций в этом модуле являетсяre.findall(). Она позволяет найти все совпадения с шаблоном в строке и вернуть их в виде списка.
Рассмотрим простой пример, чтобы понять, как использовать re.findall():
<pre>
import re
text = "Hello, my name is John. I live in a small town."
pattern = r"\b[a-zA-Z]+\b" # паттерн для поиска отдельных слов
result = re.findall(pattern, text)
print(result)
</pre>
В этом примере ищем все отдельные слова в строке text. Мы используем паттерн \b[a-zA-Z]+\b, который означает, что мы ищем слова, состоящие только из латинских букв. Функция re.findall() возвращает список всех найденных слов: ['Hello', 'my', 'name', 'is', 'John', 'I', 'live', 'in', 'a', 'small', 'town'].
Регулярные выражения позволяют также использовать метасимволы для более сложного поиска. Например, можно использовать метасимвол . для поиска всех символов, кроме перевода строки:
<pre>
import re
text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit."
pattern = r".+um" # паттерн для поиска слов, заканчивающихся на 'um'
result = re.findall(pattern, text)
print(result)
</pre>
В этом примере мы ищем все слова, заканчивающиеся на 'um'. Паттерн .+um означает, что мы ищем любой символ один или более раз, за которым следует последовательность 'um'. Функция re.findall() возвращает список найденных слов: ['dolor', 'sit', 'consectetur'].
re.findall() также поддерживает группировку с использованием скобок. Вот пример:
<pre>
import re
text = "My phone number is (123) 456-7890. Call me!"
pattern = r"\(\d{3}\) \d{3}-\d{4}" # паттерн для поиска телефонного номера
result = re.findall(pattern, text)
print(result)
</pre>
В этом примере мы ищем телефонный номер, заданный в формате (123) 456-7890. Паттерн \(\d{3}\) \d{3}-\d{4} означает, что мы ищем последовательность из трех цифр в скобках, за которыми следует пробел, затем три цифры, тире и еще четыре цифры. Функция re.findall() возвращает список найденных номеров: ['(123) 456-7890'].
Как видно из примеров, re.findall() является очень полезной функцией для работы с регулярными выражениями в Python. Она позволяет найти все совпадения с заданным паттерном в строке и вернуть их в виде списка. Это может быть полезно во множестве различных задач, например, при обработке текстовых данных или извлечении информации из файлов.