Есть такой код. Не уверен в том, что он хороший/оптимальный.
Но находит по шаблону вроде бы все номера. Т.е. первое число всегда находит во всех комбинациях номера. Но все номера (через findall) не получается найти. Показывает только “группу 1” по каждому из номеров.
Что не правильно?
import re phone_number = '38 096 123 45 67 38 096 123 4567 38 096 1234567 3809 61234567 \ 38(096)1234567 38(096)123 4567 38(096)1 234567 380 961 234 567 380961234567\ +38(096) 123 45 67 (096)1234567 (096)-123-45-67 (096)123-45-67 38-096-123-45-67\ +380961234567' number = re.search(r"(\(?\+?\d\)?\d?\s?\-?)+\d+", phone_number)[0] # number = re.findall(r"(\(?\+?\d\)?\d?\s?\-?)+\d+", phone_number) print(number)