Функция Regex findall() в Python на практических примерах
- Что такое функция findall() регулярного выражения Python?
- Примеры функции Python regex findall()
- 1) Получение списка совпадающих строк
- 2) Использование функции findall() с шаблоном, имеющим одну группу
- 3) Использование функции findall() с шаблоном, имеющим несколько групп
- 4) Функция findall() с флагом регулярного выражения
Что такое функция findall() регулярного выражения Python?
findall() — это встроенная функция модуля re, которая обрабатывает регулярные выражения и используется для поиска всех совпадений шаблона в строке. Функция findall() имеет следующий синтаксис:
re.findall(pattern, string, flags=0)
В этом синтаксисе:
- pattern — это регулярное выражение, которому вы хотите сопоставить.
- string — это входная строка.
- flags — это один или несколько флагов регулярного выражения, которые изменяют стандартное поведение шаблона.
Функция findall() сканирует строку слева направо и находит в ней все совпадения шаблона.
Результат функции findall() зависит от шаблона:
- Если в шаблоне нет групп захвата, функция findall() возвращает список строк, соответствующих всему шаблону.
- Если шаблон имеет одну группу захвата, функция findall() возвращает список строк, соответствующих группе.
- Если шаблон имеет несколько групп захвата, функция findall() возвращает кортежи строк, соответствующие группам.
Важно отметить, что группы без захвата не влияют на форму возвращаемого результата.
Примеры функции Python regex findall()
Давайте рассмотрим несколько примеров использования функции findall().
1) Получение списка совпадающих строк
В следующем примере функция findall() используется для получения списка названий цветов, которые начинаются с буквальной строки bl:
import re s = "black, blue and brown" pattern = r'bl\w+' matches = re.findall(pattern,s) print(matches)
Выход:
['black', 'blue']
Следующий шаблон соответствует буквальной строке bl, за которой следуют один или несколько словесных символов, заданных правилом \w+:
'bl\w+'
Таким образом, функция findall() возвращает список строк, соответствующих всему шаблону.
2) Использование функции findall() с шаблоном, имеющим одну группу
В следующем примере функция findall() используется для получения списка строк, соответствующих группе:
import re s = "black, blue and brown" pattern = r'bl(\w+)' matches = re.findall(pattern,s) print(matches)
Выход:
['ack', 'ue']
В этом примере используется регулярное выражение r’bl(\w+)’, имеющее одну группу захвата(\w+).
Таким образом, функция findall() возвращает список строк, соответствующих группе.
3) Использование функции findall() с шаблоном, имеющим несколько групп
В следующем примере функции findall() используются для получения кортежей строк, соответствующих группам в шаблоне:
import re s = "black, blue and brown" pattern = r'(bl(\w+))' matches = re.findall(pattern,s) print(matches)
Выход:
[('black', 'ack'),('blue', 'ue')]
В этом примере шаблон r'(bl(\w+))’ имеет две группы захвата:
- (\w+) захватывает один или несколько символов слова.
- (bl(\w+)) захватывает все совпадение.
4) Функция findall() с флагом регулярного выражения
В следующем примере используется функция findall() с флагом re.IGNORECASE:
import re s = "Black, blue and brown" pattern = r'(bl(\w+))' matches = re.findall(pattern, s, re.IGNORECASE) print(matches)
Выход:
[('Black', 'ack'),('blue', 'ue')]
В этом примере мы используем флаг re.IGNORECASE в функции findall(), которая игнорирует регистр символов совпадающих строк. Таким образом, на выходе присутствуют как черный, так и синий цвета.