Вот ваш оригинал с некоторыми пробелами (используйте re.VERBOSE
или удалите пробелы):
(\d{3}) \D* (\d{3}) \D* (\d{4}) \D* (\d*)
\D*
будет соответствовать всему, что не является цифрой, включая словаВозможно, вам стоит попробовать это:
(\d{3}) \W* (\d{3}) \W* (\d{4}) \W* (\d*)
\W*
соответствует всему, что не является словом.Это будет соответствовать (222) - 222 - 2222
.Однако он не будет совпадать, если между цифрами есть буква, как в (222) x 222 - 2222
.Последняя часть матча (\d*)
, кажется, ищет расширение.Они могут быть отформатированы различными способами - я предлагаю вам либо отбросить их, либо уточнить, исходя из того, как вы ожидаете, что ваши данные будут выглядеть.И, как говорит Эмбер, вы, вероятно, должны сбросить $
.