Как объединить регулярные выражения python

Рейтинг: 0Ответов: 0Опубликовано: 27.02.2023

Требуется найти номер телефона в тексте. Возможно ли найти универсальное регулярное выражение, чтобы номер находился как вначале текста, так и в середине и в конце? Например следующее выражение находит номер только в середине текста:

import re

text = '''sometext +79959999999 sometext'''
re.findall(r'[\S|\s](\+\d{11})[\S|\s]', text)

Следующее регулярное выражение находит только вначале:

text = '''+79959999999 sometext'''
re.findall(r'^(\+\d{11})[\S|\s]', text)

Ну и соответственно только в конце строки или текста:

text = '''sometext +79959999999'''
re.findall(r'[\S|\s](\+\d{11})$', text)

При этом ещё нужно учесть, что телефон может быть одновременно вначале и в конце текста (то есть весь текст это номер):

text = '''+79959999999'''
re.findall(r'^(\+\d{11})$', text)

Выражение вида:

re.findall(r'[^|\S|\s](\+\d{11})[$|\S|\s]', text)

Почему-то не работает

Вариант типа оставить только

re.findall(r'(\+\d{11})', text)

не подходит, так как если номер длиной больше 11 цифр, то он будет его обрезать, а нужны именно 11-значные.

Ответы

Ответов пока нет.