Olá Francisco, tudo bem com você?
Então o que você está querendo é utilizar o recurso de word boundary das expressões regulares, que é representado pelo símbolo \b
, ela funciona como um âncora para limitar justamente uma quantidade máxima que queremos :)
Então o nosso padrão
para limitar a quantidade teria que ficar da seguinte maneira:
padrao = r"\b[0-9]{4,5}[-]?[0-9]{4}\b"
Acrescentando o \b
no começo e no final do nosso padrão é como dizer para a Regex que queremos apenas que contenha a palavra com aquele tamanho exato, não queremos nada antes e nem depois :)
Dessa forma números como 91234-5678888888888888
não serão capturados pela nossa Regex
Você pode estar se perguntando porque adicionei o r
na frente da string, mas isso é para dizer para o python interpretar isso como um padrão "cru" de Regex, dessa maneira eu posso escrever o \b
sem dar problemas, caso contrário eu teria que escrever \\b
para ele entender :)
Aqui na Alura temos um curso completo de Regex: Expressões Regulares: Capturando texto de forma mágica, que é um curso completo sobre esse mundo!
E vou deixar aqui o link da aula que fala justamente sobre esse \b
: Word Boundary
Abraços e Bons Estudos!