Fala dev! Provavelmente você já deve ter ouvido falar sobre expressões regulares ou regex, mas que diabos é isso? Para que serve?
O que são Expressões Regulares?
Expressões regulares, também conhecida como regex ou regexp são sequências de caracteres que formam um padrão de busca. É um excelente recurso para buscar, manipular e validar texto com base em padrões específicos, ou seja, elas são utilizadas para corresponder strings ou partes de strings que seguem um determinado formato.
Sua origem se deu na década de 1950, e hoje são amplamente utilizadas em diversas linguagens de programação devido à sua capacidade de simplificar operações complexas de manipulação de strings.
- Âncoras:
- ^: Início da string.
- $: Fim da string.
- Metacaracteres:
- .: Qualquer caractere, exceto nova linha.
- \: Caractere de escape para caracteres especiais.
- Quantificadores:
- *: Zero ou mais ocorrências.
- +: Uma ou mais ocorrências.
- ?: Zero ou uma ocorrência.
- {n}: Exatamente n ocorrências.
- {n,}: n ou mais ocorrências.
- {n,m}: Entre n e m ocorrências.
- Grupos e Alternância:
- () : Define um grupo.
- | : Alternância (ou).
- Classes de Caracteres:
- \d: Qualquer dígito (0-9).
- \w: Qualquer caractere de palavra (a-z, A-Z, 0-9, _).
- \s: Qualquer espaço em branco (espaço, tab, nova linha).
- [...]: Conjunto de caracteres. Exemplo: [abc] corresponde a 'a', 'b', ou 'c'.
- [^...]: Conjunto negado de caracteres. Exemplo: [^abc] corresponde a qualquer caractere exceto 'a', 'b', ou 'c'.
- Escape Sequences:
- \\: Barra invertida literal.
- \.: Ponto literal.
- \D: Não dígito.
- \W: Não caractere de palavra.
- \S: Não espaço em branco.
Para que Servem as Expressões Regulares?
As expressões regulares são usadas para:
- Validação: Verificar se um texto corresponde a um padrão específico, como endereços de e-mail, números de telefone, CPFs, etc.
- Busca: Localizar ocorrências de padrões dentro de textos.
- Substituição: Modificar texto substituindo padrões correspondidos por novos valores.
- Extração: Extrair partes de um texto que correspondam a um padrão específico.
Quando Usar Expressões Regulares?
Utilize expressões regulares quando precisar de:
- Verificação rápida e eficiente de formatos de entrada.
- Manipulação complexa de strings que seria difícil de implementar com métodos tradicionais.
- Processamento de grandes volumes de texto onde buscas e substituições precisam ser feitas rapidamente.
No entanto, evite usar regex quando:
- Uma operação simples pode ser realizada sem regex.
- A expressão regular se torna extremamente complexa, tornando o código difícil de ler e manter.
- A performance é uma preocupação crítica e existem alternativas mais eficientes.
Exemplos Práticos
Validação de E-mail
- ^[a-zA-Z0-9._%+-]+: Início da string seguido de um ou mais caracteres alfanuméricos ou ., _, %, +, -.
- @: Símbolo @.
- [a-zA-Z0-9.-]+: Um ou mais caracteres alfanuméricos, . ou -.
- \.: Ponto literal.
- [a-zA-Z]{2,}$: Dois ou mais caracteres alfabéticos até o final da string.
Validação de Telefone (Formato US)
- ^\(: Início da string seguido por um parêntese esquerdo literal.
- \d{3}: Três dígitos.
- \) : Parêntese direito literal seguido de um espaço.
- \d{3}-\d{4}$: Três dígitos, um hífen, e quatro dígitos até o final da string.
Validação de CPF (Brasil)
- ^\d{3}: Três dígitos no início da string.
- \.: Ponto literal.
- \d{3}: Três dígitos.
- \.: Ponto literal.
- \d{3}: Três dígitos.
- -: Hífen literal.
- \d{2}$: Dois dígitos até o final da string.
Data (Formato DD/MM/YYYY)
- ^\d{2}: Dois dígitos no início da string.
- \.: Ponto literal.
- \d{4}$: Quatro dígitos até o final da string.
Validação de Valor Monetário (Brasil)
- ^-?: Início da string seguido de um sinal negativo opcional.
- \d{1,3}: Um a três dígitos.
- (\.\d{3})*: Zero ou mais grupos de três dígitos precedidos por um ponto.
- (,\d{2})?$: Uma vírgula seguida de dois dígitos (opcional) até o final da string.
- |: Alternância (ou).
- ^-?\d+(,\d{2})?$: Início da string seguido de um sinal negativo opcional, um ou mais dígitos, e uma vírgula seguida de dois dígitos (opcional) até o final da string.
- ^:Âncora que indica o início da string.
- -?: O hífen (-) seguido por um ponto de interrogação (?) indica que o sinal negativo é opcional.
- \d{1,3}: \d corresponde a qualquer dígito (0-9). {1,3} significa que deve haver de 1 a 3 dígitos.
- (\.\d{3})*: \. corresponde a um ponto literal. \d{3} significa três dígitos. O asterisco (*) indica que este grupo pode aparecer zero ou mais vezes.
- (,\d{2})?: , corresponde a uma vírgula literal. \d{2} significa dois dígitos. O ponto de interrogação (?) indica que este grupo é opcional.
- $: Âncora que indica o final da string.
- |: Operador OR que separa duas alternativas.
- ^-?\d+(,\d{2})?$: Segunda parte da expressão regular:
- ^: Início da string.
- -?: Sinal negativo opcional.
- \d+: Um ou mais dígitos.
- (,\d{2})?: Vírgula seguida por dois dígitos, opcional.
- $: Final da string.
Conclusão
As expressões regulares são uma ferramenta extremamente útil para desenvolvedores e administradores de sistemas que precisam manipular texto de forma eficiente baseado em padrões. Compreender e utilizar regex pode melhorar significativamente a capacidade de validar, buscar, substituir e extrair informações de strings. A prática e o estudo contínuo são essenciais para dominar essa poderosa ferramenta.
Experimente criar suas próprias expressões regulares e veja como elas podem simplificar suas tarefas de manipulação de texto!
Dica: você pode testar as expressões regulares no site Regex101, divirtam-se! 😃
(Por ClipaTec Informática)