import re
regex = re.compile(r"((\+?\d{1,3}[\d{2,}\.\- \(\)]{11,}))|(\+?[\d]{10,})", flags=re.MULTILINE)
test_str = ("Приветствую!\n"
"Можете помочь составить регулярное выражение чтобы вырезать номера телефонов из текста?\n"
"Для чего это нужно?\n"
"Для вырезки из текста +22 (999) 555-66-29 формы сообщения - телефонов спамеров.\n\n"
"Вариантов написания телефонов достаточно много.\n"
"Как учесть все варианты я не понимаю.\n"
"Телефоны имеют разное количество цифр: 10, 11, 12.\n"
"Разное написание:\n"
"+7 999 999 99 99\n"
"7 999 999 99 99\n"
"+7999 999 99 99\n"
"7999 999 99 99\n"
"+7999-999-99-99\n"
"7999-999-99-99\n"
"+7999-999-9999\n"
"7999-999-9999\n"
"+7999-9999999\n"
"7999-9999999\n"
"+79999999999\n"
"79999999999\n"
"+7.999.999.99.99\n"
"+7(999) 999-99-99\n"
"+123 (999) 555-66-29\n"
"и вместо цифры страны с оной цифрой 7, есть коды по 2 и по 3 цифры.\n"
"Можно придумать и ещё много вариантов написания номера телефона.\n"
"Как это всё учесть в выражении?\n"
"В тексте могут содержаться ссылки +555 (999) 555-66-29 на фотографии и ссылки на страницы сайта, в которых могут быть цифры. Как не зацепить цифры в ссылках? Как их отсортировать от номеров телефонов?\n"
"Можете помочь?")
subst = "убито "
result = regex.sub(subst, test_str)
if result:
print(result)
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Python, please visit: https://docs.python.org/3/library/re.html