Ищет в строке непересекающиеся вхождения шаблона.
re.findall(pattern, string, flags=0)
-> list[str] или list[tuple[str, ...]]
pattern -- Шаблон, соответствия которому нужно обнаружить.

string -- Строка, внутри которой требуется отыскать соответствия шаблону.

flags=0 -- Флаги управления интерпретацией регулярного выражения.

Сканирует строку слева направо, вхождения возвращается в порядке обнаружения в виде списка.

Возвращается список строк, либо список кортежей, если в шаблоне присутствуют несколько групп.

    import re

# Подстроки.
re.findall(r'me', 'somedomerome')
# ['me', 'me', 'me']

# Группы.
re.findall(r'(so|do|ro)(me)', 'somedomerome')
# [('so', 'me'), ('do', 'me'), ('ro', 'me')]

Пустые совпадения тоже включаются в результат. Начиная с +py3.7, не пустые совпадения могут следовать непосредственно после пустого.
Синонимы поиска: re.findall, re, findall
В разделе «re (регулярные выражения)»: re.compile re.fullmatch re.match re.search re.split re.sub Синтаксис регулярных выражений
На заметку
В разделе «События» можно узнать о надвигающихся событиях мира Python, а также поделиться своими. Если вы являетесь организатором встречи/конференции/спринта, зарегистрируйте это событие в указанном разделе, чтобы о нём узнали все желающие.