Ajude nosso projeto a se manter online, faça um PIX de qualquer valor: 029 278 923 85

Tutorial Expressões Regulares em Python, parte 2: Grupos e parêntesis ()

Neste segundo tutorial sobre expressões regulares, vamos ver o uso dos parêntesis nas regex e como usar os grupos.

Baixe a apostila Python Progressivo
Certificado do curso (para trabalhar como programador profissional)

Grupos em Regex: ( )


No tutorial anterior, de Regex parte 1, já vimos o que é uma regex, para que serve, onde são usadas e trabalhamos com um exemplo: os dos telefones do tipo xxxx-yyyy , onde usamos a regex \d para representar qualquer dígito.

Agora vamos um pouquinho mais além, e trabalhar com números que usam também o DDD.
Esses números de telefone, tem o seguinte padrão:
xx yyyy-zzzz

Uma regex que capta esse padrão, seria:
  • '\d\d \d\d\d\d-\d\d\d\d'


Mais concisamente:
  • '\d{2} \d{4}-\d{4}'

Note que tem 4 coisas aí: o DDD, o primeiro bloco de dígitos (que geralmente você descobre a operadora por ele) e o último bloco.

Vamos organizar esses blocos em grupos. Para isso, colocamos eles entre parêntesis:
  • '(\d{2}) (\d{4})-(\d{4})'

Como Usar os Grupos em Regex: group()

Tenha uma coisa em mente: os parêntesis não vão alterar sua regex. Ou seja, não precisa ter parêntesis ao redor dos números em sua string, pra dar match.

Então para que serve? É simples: podemos acessar diretamente cada grupo depois, pelo método group.

Ao dar match, o primeiro grupo poderá ser acessado pelo método: group(1)
O segundo grupo é acessado por: group(2)
E o terceiro por: group(3)

O código abaixo detecta um número de telefone no formato: xx yyyy-zzzz e mostra, separadamente, o DDD desse número:

import re
while True:
 texto = input("Digite sua string: " )
 
 minhaRegex = re.compile(r'(\d{2}) (\d{4})-(\d{4})')
 resultado = minhaRegex.search(texto)
 
 print("Numero detectado:", resultado.group())
 print("DDD desse numero:", resultado.group(1))


O método group sem argumento algum, já havíamos utilizado: ele mostra tudo, toda a regex que bateu. Usamos ele pra exibir o número inteiro do telefone, em seguida usamos o primeiro grupo, via group(1), para exibir somente o DDD.


Prontinho, além de termos extraído o número de telefone, fomos mais além e ainda detectamos que trecho é o de DDD, agora você pode extrair milhões de números de um arquivo de texto, site, documento etc, e ainda categorizar, dizer quantos são de cada cidade, tratando o DDD.

Se desejar uma tupla, ou seja, uma lista com todos os grupos que foram detectados, use o método groups() (sem argumento nenhum), que você vai ter a tupla separada bonitinha, separando os grupos de maneira organizada.

Nenhum comentário:

Postar um comentário