Expressão regular de número de telefone (Regex) em Python

Mergulhe no python fornece um pequeno tutorial incrível sobre como criar uma expressão regular para números de telefone:http://diveintopython3.ep.io/regular-expressions.html#phonenumbers

A versão final sai assim:

phone_re = re.compile(r'(\d{3})\D*(\d{3})\D*(\d{4})\D*(\d*)

Isso funciona bem para quase todos os exemplos que posso apresentar, no entanto, encontrei uma falha bastante grande que não consigo consertar.

Se um grupo de 3 dígitos chegar antes do número de telefone, ele funcionará bem. IE: "500 dólares de desconto, ligue para 123-456-7891"

Se um grupo de 3 dígitos vier depois do número de telefone, ele falhará. IE: "Ligue para 123-456-7891 para obter um desconto de até 500"

Alguma idéia de uma correção que funcionaria para os dois exemplos?

, re.VERBOSE)

Isso funciona bem para quase todos os exemplos que posso apresentar, no entanto, encontrei uma falha bastante grande que não consigo consertar.

Se um grupo de 3 dígitos chegar antes do número de telefone, ele funcionará bem. IE: "500 dólares de desconto, ligue para 123-456-7891"

Se um grupo de 3 dígitos vier depois do número de telefone, ele falhará. IE: "Ligue para 123-456-7891 para obter um desconto de até 500"

Alguma idéia de uma correção que funcionaria para os dois exemplos?

questionAnswers(2)

yourAnswerToTheQuestion