Адекватное регулярное выражение для поиска номеров телефонов СНГ

нужно рабочее регулярное выражение на python для поиска номеров телефонов СНГ. для телефонов нашел такое регулярное выражение:

r'(\+7|8|7).*?(\d{3}).*?(\d{3}).*?(\d{2}).*?(\d{2})'

но она собирает не только телефоны, но и всякий мусор вроде 83423 есть у кого более совершенное решение, чтобы собирала телефоны в форматах например +7 911 912 92 92 или 79119129292 или 8911912 92 92 итп, но отсеивала просто наборы цифр вроде 8974353 или 7942657658794532453 итп?


Ответы (1 шт):

Автор решения: finally

ориентируясь на тесты, которые вы приложили, это должно подойти:

pattern = \b\+?[7,8](\s*\d{3}\s*\d{3}\s*\d{2}\s*\d{2})\b

я выделил первой группой только сам номер, если нужно достать full match, то пишите .group()

→ Ссылка