O que são Expressões Regulares?

 

No Oracle, expressões regulares são sequências de caracteres que formam um padrão de busca. Elas são amplamente utilizadas para buscar, substituir e validar dados em strings. As expressões regulares fornecem uma maneira poderosa e flexível de manipular texto, permitindo que você encontre padrões complexos em grandes volumes de dados.

Vantagens de Usar Expressões Regulares

  • Flexibilidade na Busca: Permitem encontrar padrões complexos dentro de strings, como números, palavras específicas, formatos de data, etc.
  • Manipulação de Strings: Facilitam a substituição, extração e validação de substrings dentro de uma string maior.
  • Validação de Dados: São muito úteis para garantir que os dados inseridos sigam um formato específico, como endereços de e-mail ou números de telefone.
  • Eficiência nas Consultas: Melhoram a eficiência das consultas ao permitir buscas complexas sem a necessidade de escrever lógica adicional em PL/SQL.

Tipos de Funções de Expressões Regulares

REGEXP_LIKE

A função REGEXP_LIKE compara uma string a um padrão de expressão regular e retorna verdadeiro se houver uma correspondência. Veja um exemplo:

 

SELECT nome FROM funcionarios WHERE REGEXP_LIKE(nome, '^A');

Neste exemplo, a consulta retorna todos os nomes que começam com a letra ‘A’.

 

NOME
Ana Souza

REGEXP_INSTR

A função REGEXP_INSTR retorna a posição do primeiro caractere da substring que corresponde ao padrão de expressão regular dentro de uma string. Veja um exemplo:

 

SELECT nome, REGEXP_INSTR(nome, 'a') AS primeiro_a FROM funcionarios;

Neste exemplo, a consulta retorna a posição do primeiro ‘a’ em cada nome.

 

NOMEPRIMEIRO_A
Carlos Silva2
Ana Souza3
Mariana Costa2
Roberto Alves0
Fernanda Santos5
Lucas Oliveira4
Camila Pereira2
Ramon Vieira2

REGEXP_SUBSTR

A função REGEXP_SUBSTR retorna a substring que corresponde ao padrão de expressão regular dentro de uma string. Veja um exemplo:

 

SELECT nome, REGEXP_SUBSTR(nome, '[A-Za-z]+') AS primeiro_nome
  FROM funcionarios;

Neste exemplo, a consulta retorna a primeira palavra em cada nome.

 

NOMEPRIMEIRO_NOME
Carlos SilvaCarlos
Ana SouzaAna
Mariana CostaMariana
Roberto AlvesRoberto
Fernanda SantosFernanda
Lucas OliveiraLucas
Camila PereiraCamila
Ramon VieiraRamon

REGEXP_REPLACE

A função REGEXP_REPLACE substitui todas as ocorrências de uma substring que corresponde ao padrão de expressão regular dentro de uma string por outra substring. Veja um exemplo:

 

SELECT REGEXP_REPLACE(nome, 'a', 'A') FROM funcionarios;

Neste exemplo, todos os ‘a’ em cada nome são substituídos por ‘A’.

 

NOMENOME_APOS_REPLACE
Carlos SilvaCArlos SilvA
Ana SouzaAnA SouzA
Mariana CostaMAriAnA CostA
Roberto AlvesRoberto Alves
Fernanda SantosFernAndA SAntos
Lucas OliveiraLucAs OliveirA
Camila PereiraCAmilA PereirA
Ramon VieiraRAmon VieirA

Padrões Comuns

  1. Metacaracteres:
    • . : Corresponde a qualquer caractere único.
    • * : Corresponde a zero ou mais ocorrências do caractere anterior.
    • + : Corresponde a uma ou mais ocorrências do caractere anterior.
    • ? : Corresponde a zero ou uma ocorrência do caractere anterior.
    • ^ : Corresponde ao início da string.
    • $ : Corresponde ao final da string.
    • | : Alternativa lógica (OR).
    • [] : Define uma classe de caracteres.
    • (): Define um grupo de captura.
  2. Quantificadores:
    • {n} : Exatamente n ocorrências.
    • {n,} : No mínimo n ocorrências.
    • {n,m} : Entre n e m ocorrências.
  3. Classes de caracteres predefinidas:
    • \d : Dígito.
    • \D : Não dígito.
    • \w : Caractere de palavra.
    • \W : Não caractere de palavra.
    • \s : Espaço em branco.
    • \S : Não espaço em branco.

Exemplos Práticos

Buscar por strings que começam com ‘R’
SELECT nome FROM funcionarios WHERE REGEXP_LIKE(nome, '^R');
NOME
Roberto Alves
Ramon Vieira

Buscar por strings que terminam com ‘s’
SELECT nome FROM funcionarios WHERE REGEXP_LIKE(nome, 's$');
NOME
Roberto Alves
Fernanda Santos

Buscar por strings que contêm números
SELECT nome FROM funcionarios WHERE REGEXP_LIKE(nome, '\d');

Substituir todos os espaços por hífens
SELECT nome, REGEXP_REPLACE(nome, '\s', '-') AS nome_com_hifem
  FROM funcionarios;
NOMENOME_COM_HIFEM
Carlos SilvaCarlos-Silva
Ana SouzaAna-Souza
Mariana CostaMariana-Costa
Roberto AlvesRoberto-Alves
Fernanda SantosFernanda-Santos
Lucas OliveiraLucas-Oliveira
Camila PereiraCamila-Pereira
Ramon VieiraRamon-Vieira

Extrair o primeiro número de uma string
SELECT REGEXP_SUBSTR(nome, '\d+') FROM funcionarios;

Considerações Finais

 

As expressões regulares são ferramentas poderosas para manipulação e filtragem de dados no Oracle. Utilizando-as corretamente, você pode criar consultas mais flexíveis e eficientes, garantindo a precisão dos resultados e facilitando a análise de dados.

 

Se você tiver alguma dúvida ou sugestão, deixe um comentário abaixo!

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Rolar para cima