Как объединить регулярные выражения python
Требуется найти номер телефона в тексте. Возможно ли найти универсальное регулярное выражение, чтобы номер находился как вначале текста, так и в середине и в конце? Например следующее выражение находит номер только в середине текста:
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-значные.
Источник: Stack Overflow на русском