Expressão regular no PL/SQL: Como usar essa poderosa ferramenta para manipular strings de forma divertida e eficiente
Olá, caro leitor!
Se você está interessado em aprender como usar expressões regulares no PL/SQL, o subconjunto procedural do SQL usado no Oracle Database, você veio ao lugar certo. Neste artigo, vamos mostrar como você pode usar essa poderosa ferramenta para manipular strings de forma divertida e eficiente, usando o Oracle 19c como base.
Mas afinal, o que são expressões regulares? Expressões regulares são padrões que descrevem um conjunto de strings que possuem uma determinada característica em comum. Por exemplo, o padrão ^[A-Z][a-z]+$ descreve todas as strings que começam com uma letra maiúscula e terminam com uma ou mais letras minúsculas. As expressões regulares são compostas por caracteres literais, como A, b, 1, etc., e por metacaracteres, que são símbolos especiais que representam conceitos abstratos, como início, fim, repetição, alternativa, etc. Para saber mais sobre os metacaracteres, veja .
As expressões regulares são muito úteis para realizar tarefas como validar, extrair, substituir ou transformar strings, de forma rápida e precisa. Por exemplo, você pode usar uma expressão regular para verificar se um email é válido, para extrair o nome de um arquivo de um caminho, para substituir todas as ocorrências de uma palavra por outra, ou para converter uma string em maiúsculas ou minúsculas.
No PL/SQL, você pode usar expressões regulares com as seguintes funções:
- REGEXP_LIKE: retorna verdadeiro se uma string corresponde a uma expressão regular, ou falso caso contrário. Essa função é usada para filtrar dados em uma cláusula WHERE ou HAVING, ou para validar dados em uma restrição CHECK ou em um bloco PL/SQL. Por exemplo:
-- Seleciona os nomes dos clientes que começam com A e terminam com O
SELECT nome FROM clientes WHERE REGEXP_LIKE(nome, '^A.*O$');
-- Cria uma restrição que verifica se o email dos clientes é válido
ALTER TABLE clientes ADD CONSTRAINT email_valido CHECK (REGEXP_LIKE(email, '^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$'));
-- Declara uma variável que armazena um email digitado pelo usuário
DECLARE
v_email VARCHAR2(50) := '&email';
BEGIN
-- Verifica se o email é válido e exibe uma mensagem
IF REGEXP_LIKE(v_email, '^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$') THEN
DBMS_OUTPUT.PUT_LINE('O email ' || v_email || ' é válido.');
ELSE
DBMS_OUTPUT.PUT_LINE('O email ' || v_email || ' é inválido.');
END IF;
END;
/
- REGEXP_SUBSTR: retorna uma substring que corresponde a uma expressão regular, a partir de uma string de entrada. Essa função é usada para extrair dados de uma string, de forma flexível e dinâmica. Por exemplo:
-- Retorna o primeiro nome de uma string que contém o nome completo
SELECT REGEXP_SUBSTR('João da Silva', '^[^ ]+') AS primeiro_nome FROM DUAL;
-- Resultado: retorna 'João'
PRIMEIRO_NOME
-------------
João
- REGEXP_REPLACE: retorna uma string que é o resultado da substituição de todas as ocorrências de uma expressão regular por outra string, em uma string de entrada. Essa função é usada para modificar dados de uma string, de forma simples e poderosa. Por exemplo:
-- Retorna uma string que é o resultado da substituição de todas as vogais por asteriscos, em uma string de entrada
SELECT REGEXP_REPLACE('Expressão regular é muito legal', '[aeiou]', '*') AS resultado FROM DUAL;
-- Resultado: retorna 'Expr*ss** r*g*l*r * m**t* l*g*l'
RESULTADO
-------------------------
Expr*ss** r*g*l*r * m**t* l*g*l
- REGEXP_INSTR: retorna a posição da primeira ocorrência de uma expressão regular em uma string de entrada, ou zero se não houver nenhuma ocorrência. Essa função é usada para localizar dados em uma string, de forma precisa e eficiente. Por exemplo:
-- Retorna a posição da primeira ocorrência de um número de telefone em uma string de entrada
SELECT REGEXP_INSTR('Meu número é (11) 9999-9999. Ligue-me!', '\([0-9]{2}\) [0-9]{4}-[0-9]{4}') AS posicao FROM DUAL;
-- Resultado: retorna 13
POSICAO
-------
13
- REGEXP_COUNT: retorna o número de ocorrências de uma expressão regular em uma string de entrada. Essa função é usada para contar dados em uma string, de forma simples e rápida. Por exemplo:
-- Retorna o número de palavras em uma string de entrada
SELECT REGEXP_COUNT('Expressão regular é muito legal', '[^ ]+') AS palavras FROM DUAL;
-- Resultado: retorna 4
PALAVRAS
--------
4
Como podemos ver, as expressões regulares são uma ferramenta poderosa para manipular strings de forma divertida e eficiente, no PL/SQL. As expressões regulares permitem que você descreva padrões que representam um conjunto de strings que possuem uma determinada característica em comum, e que você use esses padrões com funções que realizam tarefas como validar, extrair, substituir, transformar, localizar ou contar strings, de forma rápida e precisa.
Espero que este artigo tenha sido útil e divertido para você. Se você gostou, compartilhe com seus amigos e colegas que também querem aprender mais sobre PL/SQL !
Referências