P>

capa_NET39_G.gif

Clique aqui para ler todos os artigos desta edição

.NET Framework

Entendendo Expressões Regulares

 

Este artigo discute

Este artigo usa as seguintes tecnologias

·       Expressões Regulares;

·       RegularExpressionValidator;

·       ValidationSummary.

Visual Studio 2005, C# e ASP.NET.

 

Este artigo pretende desmistificar o uso de Expressões Regulares e fornecer meios para utilização desse recurso de forma simples e prática. As origens das expressões regulares remontam ao ano de 1943, quando dois neurologistas, MacCulloc e Pitts, publicaram um estudo que teorizava o funcionamento dos neurônios, sua base encontra-se na teoria dos autômatos finitos e na teoria da linguagem formal.

Na década de 50 o matemático Stephen Kleene descreveu esses modelos usando uma notação matemática chamada grupos regulares. O encontro com o computador, só aconteceu mesmo em 1968, quando Ken Thompson utilizou a notação em um algoritmo de busca utilizado no editor de textos qed, que depois virou o ed (EDitor padrão dos primeiros sistemas Unix).

Esse ed tinha o comando de contexto g, que aceitava expressões regulares e um comando p, e sua sintaxe ficava g/RE/p (Global Regular Expression Print), que deu origem ao aplicativo grep, que por sua vez originou o egrep.

Finalmente em 1986 foi criado o divisor de águas, um pacote pioneiro em C chamado regex que tratava das expressões regulares e qualquer um poderia incluí-lo em seu próprio programa. Aí não teve mais volta, as expressões caíram no gosto popular e cada vez mais e mais programas e linguagens as utilizam.

Podemos dizer, resumidamente, que Expressões Regulares é um método poderoso, flexível e muito eficiente para especificar um determinado padrão de texto, ou seja, a partir da composição de símbolos, da utilização de caracteres com funções especiais (metacaracteres) e caracteres literais, formam uma expressão, que será interpretada como regra para validação dos dados informados.

As expressões regulares são projetadas e otimizadas para a manipulação de texto, ela é composta por dois tipos básicos: caracteres de texto literal (texto normal) e caracteres especiais (metacaracteres), cujo conjunto fornece às expressões regulares capacidade de processamento, permitindo analisar grande quantidade de texto.

O .NET Framework implementa o mecanismo NFA (Nondeterministic Finite Automaton) tradicional, como aqueles utilizados em Perl, Python, Emacs e TCL. O NFA utiliza um algoritmo de inferência chamado Backtracking.

Esse procedimento faz com que o sistema retorne pelo mesmo caminho percorrido com a finalidade de encontrar soluções alternativas, testando todas as possibilidades de uma expressão regular em uma ordem específica, aceitando a primeira correspondência encontrada.

No caso mais crítico o NFA pode se tornar muito lento devido ao grande número de caminhos percorridos para realizar a busca. Com o objetivo de explorar ao máximo os benefícios de um mecanismo NFA, o .NET Framework inclui um conjunto completo de construções para permitir que os programadores utilizem o mecanismo backtracking em toda sua potencialidade.

Essas construções podem ser usadas para localizar correspondências mais rapidamente ou para preferir expansões específicas sobre outras. As classes de expressão regular do .NET Framework, fazem parte da biblioteca de classes base e podem ser usadas em qualquer linguagem ou ferramenta que utilize o Common Language Runtime, incluindo ASP.NET e Visual Studio 2005.

Elementos das Expressões Regulares

Classes de Caracteres: Uma classe de caractere é um conjunto de caracteres que localizará uma correspondência entre um dos caracteres incluídos no conjunto. A Tabela 1 relaciona os metacaracteres dessa classe.

 

Metacaracteres

Descrição

. (ponto)

Corresponde a qualquer caractere, exceto \n (quebra de linha).

[]

Combina qualquer caractere contido entre colchetes, para especificar uma faixa de valores informe o valor inicial e final, separados por um hífen (-), por exemplo:

[aeiou]

Corresponde a qualquer caractere contido no conjunto de caracteres especificados.

...

Quer ler esse conteúdo completo? Tenha acesso completo