Guia Essencial de Expressões Regulares (RegEx)
Classificado em Computação
Escrito em em português com um tamanho de 6,61 KB
O que são Expressões Regulares?
- Uma expressão regular é uma sequência de caracteres que são interpretados por um algoritmo para identificar palavras, cruzar padrões e manipular texto.
- As expressões regulares permitem: Extrair, editar, substituir e excluir palavras em uma frase. Adicionar partes de texto em uma coleção para geração de relatórios.
- São muito utilizadas em aplicações .NET, Java, Python, Perl, PHP, JavaScript, e muitas outras linguagens de programação.
Por que Estudar Expressões Regulares?
- Computadores são muito bons para se trabalhar com estrutura de dados, mas ainda têm dificuldades de entender textos tão bem como as pessoas. Expressões Regulares buscam entender padrões em textos para que possamos identificar e/ou validar informações.
Construindo Padrões com RegEx
- O RegEx permite uma variedade de caminhos diferentes para se construir o mesmo padrão. A melhor forma de se trabalhar com ele é construir a string de validação passo a passo, identificando os padrões e escrevendo sua validação um por vez na string.
Vamos supor que iremos processar a informação de um Ad online (propaganda virtual). Queremos procurar o valor de um carro que está à venda, mas não queremos gastar mais que $10,000.
- O primeiro passo é criar uma regra para encontrar o preço dentro do anúncio.
- O segundo passo é, após identificarmos o preço, verificar se ele é maior ou não ao limite que desejamos.
Metacaracteres em Expressões Regulares
No RegEx, utilizamos caracteres literais (ou metacaracteres) para construirmos padrões, onde cada um deles serve para expressar uma determinada situação.
^ $ . | { } [ ] ( ) * + ? \ |
Colchetes: [ ]
- Serve para expressarmos uma lista de possíveis caracteres em uma posição do texto. No caso do texto “
7pm
”, imagine que queremos identificar um horário que pode ser escrito por pm, Pm, pM, PM. Assim poderíamos construir um padrão:7[Pp][Mm]
onde[Pp]
indica que naquela posição estamos procurando a letra P ou p.
Intervalos com Colchetes: [ ]
- Se quisermos identificar um horário das 1 a 9, e também incluir a validação do AM, poderíamos escrever
[123456789][AaPp][Mm]
. - O intervalo de 1 a 9 pode também ser descrito com o símbolo hífen “-”, ficando assim:
[1-9][AaPp][Mm]
.
Negação: O Metacaractere ^
- Imagine, por exemplo, que queremos verificar algum texto que não possua vogais. Podemos construir o padrão abaixo:
[^aeiou]
onde^
nega os valores possíveis de determinado intervalo.
Atalhos Comuns em RegEx
- Temos alguns atalhos que nos ajudam a criar os padrões:
\D
– Representa qualquer caractere que NÃO seja um dígito inteiro (correspondente ao[^0-9]
).\w
– Qualquer caractere alfanumérico (correspondente ao[a-zA-Z0-9_]
).\W
– Negação do\w
.\s
– Qualquer espaço ou tabulação em branco (\r\n\t\f
)..
– Representa qualquer caractere (com exceção do\n
).
Quantificadores: {}
{}
são também chamados de quantificadores. Os quantificadores permitem especificar o número de vezes que determinado caractere irá ocorrer. Nesses exemplos:\d{2}
– o padrão obrigatoriamente deve ter 2 dígitos.\d{1,3}
– o padrão pode ter entre 1 a 3 dígitos.\d{2,}
– o padrão deve ter 2 dígitos ou mais.
Outros Quantificadores Especiais
- Temos também alguns quantificadores especiais que podemos usar:
*
– Representa Zero ou mais vezes (correspondente ao{0,}
).+
– Representa UMA ou mais vezes (correspondente ao{1,}
).?
– Representa ZERO OU UMA vez (correspondente ao{0,1}
).
Âncoras em Expressões Regulares
- Podemos utilizar âncoras para indicar que queremos que o padrão seja reconhecido no início do texto, no final do texto ou que ele esteja em uma palavra.
Caractere | Descrição |
---|---|
^ | Início da string |
$ | Final da string (se Multiline, irá verificar no final da linha) |
\b | Âncora de palavra |
\B | Deve ter uma palavra válida ao redor da correspondência |
Grupos de Captura e Alternação: ()
()
representa uma alternação. Alternação é a habilidade do padrão aceitar uma lista de valores. A extensão de um site, por exemplo, pode ser .com, .net, .br, .edu, .org. Assim, tem-se uma lista de possibilidades. Podemos então utilizar o padrão(com|net|br|edu|org)
, separado por|
indicando uma nova opção.
Grupos em Expressões Regulares
- A criação de grupos é uma das funcionalidades mais poderosas do RegEx. Com eles é possível executar separadamente os padrões em uma única string, alcançando múltiplos resultados.
Exemplo de Grupos: 1º Grupo
Cel: (14) 99999-9999 -- celular 99999-9999 -- cel14 99999-9999
O padrão criado foi:
[Cc]el(\w*)[:]*[ ]*
Exemplo de Grupos: 2º Grupo
Cel: (14)99999-9999 – celular99999-9999 -- cel1499999-9999
O padrão criado foi:
(\(?\d{2}\)?)?[ ]*
Exemplo de Grupos: 3º Grupo
Cel: (14) 99999-9999 -- celular 99999-9999 -- cel14 99999-9999
O padrão criado foi:
\d{5}-\d{4}
Sintaxe para Criação de Grupos
(?expressão regular) ou
(?’nomeGrupo’expressãoregular)
Detalhes dos Grupos: 1º Grupo
(?[Cc]el(\w*))
Dois pontos e espaçamento (não é relevante, por isso não mapeamos)
[:]*[ ]*
Detalhes dos Grupos: 2º Grupo (DDD)
(\(?(?\d{2})\)?)?[ ]?
Detalhes dos Grupos: 3º Grupo (Telefone)
(?\d{5}-\d{4})