fork download
  1. import re
  2.  
  3. # quando o CPF é válido, ambas funcionam
  4. cpf = '123.456.789-11'
  5. print(re.match(r'\d{3}\.\d{3}\.\d{3}-\d{2}', cpf)) # encontra match
  6. print(re.match(r'^\d{3}\.\d{3}\.\d{3}-\d{2}$', cpf)) # encontra match
  7.  
  8. # mas quando tem mais de 2 dígitos no final, a primeira encontra match (mas não deveria)
  9. cpf = '123.456.789-111111111'
  10. print(re.match(r'\d{3}\.\d{3}\.\d{3}-\d{2}', cpf)) # encontra match (mas não deveria)
  11. print(re.match(r'^\d{3}\.\d{3}\.\d{3}-\d{2}$', cpf)) # None (OK, não é um CPF)
Success #stdin #stdout 0.02s 27728KB
stdin
Standard input is empty
stdout
<_sre.SRE_Match object; span=(0, 14), match='123.456.789-11'>
<_sre.SRE_Match object; span=(0, 14), match='123.456.789-11'>
<_sre.SRE_Match object; span=(0, 14), match='123.456.789-11'>
None