Expressões Regulares em Banco de Dados, muito além do Like – Parte 01

I – Introdução:

Expressões regulares representam uma poderosa ferramenta para descrição e busca de padrões em diversos tipos de suporte de dados. Esses podem ser bases de dados, textos ou mesmo na própria Internet, como podemos presumir a busca, com a utilização de  padrões, é uma atividade bastante comum, em diversas áreas do conhecimento,  e que  já possui um instrumental bastante variado em todos os tipos de sistemas, sejam eles tipicamente comerciais ou científicos. Nesse contexto situa-se a importância de ferramentas cada vez mais versáteis, quer sejam de extração de conhecimento ou de identificação de dados. Nesse ponto introduzimos uma técnica que poderá servir perfeitamente aqueles que necessitam de mais ferramentas para realizar suas pesquisas em suas bases de dados: Expressões Regulares.

Expressões Regulares já constam como recurso disponível em diversos sistemas de informação há muito tempo, para os aficionados por Unix/Linux o grep (“Global Regular Expression Print”)  não é nenhuma novidade,  assim como sua utilização em editores de texto e linguagens de programação( tais como  Java e Perl etc...), e  também já se encontra  incorporado “oficialmente” aos Sistemas Gerenciadores de Bases de Dados(SGBDS) a partir dos SGBDS padrão ANSI (
American National Standards Institute - Instituto Nacional Americano de Padronização)  SQL99.

Para a Ciência da Computação  Expressões Regulares(ERs ou do inglês abreviado regex - regular expression)  provê uma forma eficiente de identificar e manusear cadeias de caracteres de interesse, como caracteres particulares, seqüências alfanuméricas, padrões numéricos, etc... Dessa forma podemos, por exemplo, utilizar ERs para:

·   Localizar um determinado trecho de texto que só se tem idéia das variações possíveis.

·   Procurar seqüências alfanuméricas que se iniciem ou terminem com caracteres conhecidos.

·   Realizar busca com padrões complexos de combinações alfanuméricas. 

·   Validação de formatos de texto

·   Filtragem de informação.   


A base teórica das  ERs  vem de estudos da
neurolinguística na década 40, assim como  da  matemática na década de 50, temos como um nome importante  Stephen Cole Kleene, que teve grande influência na Ciência da Computação e na Matemática. Como recurso de SGBDs, as ERs, foram  oficialmente adicionado pelo padrão SQL:1999(ANSI), como já mencionado, em conformidade com o padrão POSIX (Acrônimo para Portable Operating System Interface que pode ser traduzido como Interface Portável entre Sistemas Operacionais). Trata-se de uma família de normas definidas pelo IEEE (Institute of Electrical and Electronics Engineers - Instituto de Engenheiros Eletricistas e Eletrônicos)e designada formalmente por  IEEE 1003.

Na data em que esse artigo estava sendo redigido vários SGBDs já ofereciam  algum suporte a ERs, como o Microsoft SQL Server 2000, Mysql, PostgreSQL, Oracle10G entre outros. Infelizmente a falta de padronização na implementação de recursos por parte dos fabricantes de SGBDs é muito sentida em termos de ERs.

Esse artigo cobre a utilização de ERs no SGBD Oracle, versões 10G e 11G, com  informações  necessárias aos usos mais recorrentes dessas funções. Caso esteja trabalhando com outro SGBD e queira utilizasse das informações aqui encontradas, por gentileza consulte a documentação do mesmo para verificar a compatibilidade.

II – Caracteres especiais utilizados nas Expressões Regulares

Para utilização de Expressões Regulares, se faz necessário conhecer alguns metacaracteres( entenda por “curingas” ou “alias”) que são encontrados na utlização de ERs, nesse instante apenas sitarei alguns realações mais completas poderão ser encontradas a apartir das referências no final do artigo. Para utilização de expressões regulares existem vários metacaracteres que devem ser conhecidos, entre eles:

 

pb_19_05_09_pic01.JPG


O padrão POSIX possui também classes pré-definidas que podem ser utilizados com ([ ]) – brackets. Temos como exemplos: [[:lower]], [[:digit]]  entre outros, veja relação a seguir:


pb_19_05_09_pic02.JPG

Como já foi colocado, os interessados em aprofundar seus conhecimentos nesse assunto podem utilizar as referências presentes no item 5 (Para saber mais ) desse artigo, lá encontraram informações de onde pesquisar as relações de completas de metacaracteres e classes disponíveis.