Вы можете использовать это регулярное выражение, которое будет соответствовать только 11-значным числам, которые могут иметь дефис -
между любыми из чисел,
(?<!\d)\d(?:-?\d){10}(?!\d)
Пояснение:
(?<!\d)
- цифре не должна предшествовать цифра
\d
- начинается сопоставление с цифрой
(?:-?\d){10}
- Далее соответствует десяти цифрам, которые могут иметь дополнительный дефис перед цифрой
(?!\d)
- за совпадающим номером не должна следовать цифра, чтобы избежать совпадения с большими числами, чем одиннадцать цифр
Regex Demo
код Python,
import re
s = 'sometext 0321-2695224 something else 03212695224 something else further 0344446568956565'
print(re.findall(r'(?<!\d)\d(?:-?\d){10}(?!\d)', s))
Печать только ваших предполагаемых номеров,
['0321-2695224', '03212695224']