Ele é o símbolo de OU, em expressões regulares.
Certificado do curso (para trabalhar como programador profissional)
Caractere Pipe: |
Ela é chamada de pipe e tem um significado de OU: ou isso ou aquilo.
Usamos elas em expressões regulares, quando queremos encontrar um padrão OU outro, ou seja, qualquer um ou mesmo os dois.
Exemplo de uso:
r'padrao1 | padrao2 | padrao3'
Essa expressão regular vai em busca de qualquer um dos três padrões.
Por exemplo, script abaixo detecta se o alguma das bandas favoritas do usuário é Iron Maiden, Rush ou Deep Purple:
import re while True: texto = input("Quais suas bandas favoritas: " ) minhaRegex = re.findall(r'Rush|Iron Maiden|Deep Purple', texto) print("Gostei dessas: ", minhaRegex)
Não digite nenhuma banda de forró, funk ou k-pop, o programa vai travar e vai queimar seu HD. E sua casa vai pegar fogo também.
Exercício de Regex Usando Pipe |
No artigo passado, no tutorial sobre grupos e parêntesis em regex, estávamos em nossa saga em criar um script que vai detectar um número de telefone em uma string qualquer (pode escrever até a bíblia nessa string...provavelmente você não vai achar nenhum número de telefone na bíblia...um trecho de uma música do Iron Maiden, talvez...).Porém, um número pode ter os seguintes formatos:
- xx yyyy-zzzz
- xx yyyyzzzz
- xxyyyyzzzz
Veja bem...pode ser um OU outro OU outro...OU, entendeu?
Sim, vamos usar o caractere de pipe para detectar qualquer um desses tipos de números.
- xx yyyy-zzzz, representamos por: \d{2} \d{4}-\d{4}
- xx yyyy-zzzz, representamos por: \d{3} \d{4}\d{4} ou simplesmente: \d{3} \d{8}
- xxyyyyzzzz, representamos simplesmente por: \d{10}
E prontinho. Dentro da regex, separamos cada uma desses padrões pelo caractere de pipe |, e as regex em Python fazem o resto, vão buscar qualquer um desses três padrões.
Veja como fica nosso código:
import re while True: texto = input("Digite sua string: " ) minhaRegex = re.findall(r'\d{2} \d{4}-\d{4}|\d{2} \d{8}|\d{10}', texto) print("Gostei dessas: ", minhaRegex)
Olhe como nossos scripts detectores de números de telefone estão ficando cada vez mais eficientes!
E o mais bacana: estamos fazendo cada vez mais, escrevendo cada vez menos código.
Essa é a beleza da programação em Python.
Exercício de Regex
Faça um script que detecte números no formato:(xx) yyyy-zzzz
(xx) yyyyzzzz
Para detectar o parêntese, você tem que escapar ele: \( e \), ok ?
Escreva seu script aí nos comentários.
Colocamos o nosso script na:
Apostila Python Progressivo
import re
ResponderExcluirwhile True:
texto = input('Digite seu número de telefone: ');
minhaRegex = re.findall(r'\(\d{2}\) \d{4}-\d{4}|\(\d{2}\) \d{4}\d{4}', texto)
print('Gostei dessas: ', minhaRegex);