Modo verbose: re.VERBOSE
Mas mostre aquilo para sua mãe ou amigos, vão achar que você ficou doido, está escrevendo em um dialeto alienígena e vão querer te internar.
E não é pra menos, a medida que nossas regex vão ficando mais longas e complexas, vai ficando muito mais difícil de entender elas, isso pois os símbolos ficam 'grudados' um nos outros.
Para facilitar e resolver isso, existe um argumento do método re.compile chamado re.VERBOSE que vai ignorar todo o espaços em brancos e comentários na string que define a regex.
Ou seja, basta fazer: re.compile(r'padrao', re.VERBOSE)
Detectando Números de telefone
Agora vamos fazer o script definitivo, que encontra todo e qualquer número de telefone em um texto, site, arquivo extenso ou o que for.Se tiver dois dígitos de DDD ou não, 4 números e depois 4 números, ele detecta.
- Primeiro grupo
Primeiro, temos que detectar o DDD.
Ele pode aparecer de uma das seguintes maneiras:
xx
(xx)
Regex pro primeiro caso: \d{2}
Regex do segundo caso: \(\d{2}\)
Como pode ser um ou outro, colocamos um pipe | entre essas duas possibilidades.
Como pode acontecer de o DDD nem ter sido digitado, colocamos uma interrogação após esse grupo.
- Segundo grupo
Aqui, depois do DDD, pode ter algum espaçamento ou não.
Representamos isso assim: (\s*)?
O asterisco é pra caso tenha várias espaços.
A interrogação é que esse grupo pode existir ou não.
- Terceiro grupo
Agora, vem os 4 primeiros dígitos do telefone em si:
(\d{4})
- Quatro grupo
Agora, pode ser que exista um hífen ou algum espaçamento.
Pode ter um ou mais espaçamento: \s*
Pode ter um hífen, vários, under line ou o que seja: .*
Como pode ser um ou outro, colocamos um pipe | entre eles
- Quinto grupo
Por fim, os quatro últimos dígitos:
(\d{4})
Nosso código Python fica:
import re while True: texto = input("Digite sua string: " ) minhaRegex = re.compile(r'''( (\d{2}|\(\d{2}\))? # código de área (\s*)? # espaço (\d{4}) # primeiros 3 dígitos (\s*|.*) # separador (\d{4}) # últimos 4 dígitos )''', re.VERBOSE) minhaRegex = minhaRegex.search(texto) print(minhaRegex.group())
Veja que colocamos entre aspas triplas, para poder quebrar em várias linhas.
Também, fizemos um comentário sobre cada grupo, para facilitar o entendimento.
Ficou bacana, não ficou ?
Regex para detectar um endereço de e-mail
Um endereço de e-mail é composto de:- Nome de usuário
- Arroba
- Nome do domínio
- Ponto
- Extensão do domínio (com, com.br, net, pt etc)
Nosso código fica:
emailRegex = re.compile(r'''( [a-zA-Z0-9._%+-]+ # nome do usuário @ # arroba [a-zA-Z0-9.-]+ # domínio (\.[a-zA-Z]{2,4}) # ponto seguido de outros caracteres )''', re.VERBOSE)
Ou seja, o nome deve conter pelo menos um caractere (maiúsculo ou minúsculo, ou algum dígito), seguido de @, depois a mesma regex para nomes, um ponto mais 2 a 4 caracteres.
Nenhum comentário:
Postar um comentário