Artigo Java Magazine 04 - Expressões Regulares no J2SE 1.4

Confira nesta edição de Java Magazine uma entrevista Bill Day Java speech, Interface ricas com flash

Esse artigo faz parte da revista Java Magazine edição 04. Clique aqui para ler todos os artigos desta edição

Clique aqui para ler essa revista em PDF.

Expressões Regulares no J2SE 1.4

Processamento de texto ao estilo Perl

As nova API java.util.regex incorpora recursos clássicos de manipulação de expressões regulares com simplicidade e desempenho

Expressões regulares são comumente utilizadas para procurar ou alterar fragmentos de texto em documentos de conteúdo textual. Tais fragmentos (sequências de caracteres) são identificados através de regras de formação, ou padrões, que compõem as expressões regulares.

As expressões regulares são disponibilizadas ao usuário através de ferramentas de linha de comando, tais como grep, sed, ou awk, típicas em ambientes Unix, ou através de linguagens de programação, tais como Perl, C, Python ou Java. Destas linguagens, apenas Perl suporta expressões regulares de forma integrada. As demais, as suportam através de APIs (bibliotecas de funções/classes).

Na prática, a sintaxe das expressões regulares varia de uma ferramenta ou linguagem para outra, o que reflete a inexistência de um padrão na indústria. Apesar disso, uma sintaxe em particular tornou-se dominante: a da linguagem Perl, na versão 5. Esta sintaxe foi adotada, na maior parte, por várias linguagens e APIs modernas, incluindo a nova API padrão do J2SE 1.4.

APIs

O pacote java.util.regex, novo no J2SE 1.4, define a API padrão para expressões regulares. Além da adição deste pacote, a classe String ganhou métodos adicionais que aceitam como argumento uma expressão regular (por exemplo, o método split). Estes métodos, contudo, são apenas para conveniência. Tudo o que eles fazem pode também ser feito através das classes específicas para expressões regulares, definidas naquele pacote.

Existem também outras APIs disponíveis para a plataforma Java, tais como as do projeto Jakarta da organização Apache (veja links). A API do J2SE 1.4 é considerada uma das melhores, tanto em capacidade quanto em desempenho. Assim sendo, neste artigo nos limitamos a esta API, e à sua sintaxe de expressões regulares. O código de exemplo no artigo foi testado com o J2SDK 1.4.1, da Sun.

Antes do J2SE 1.4, as classes java.util.StringTokenizer e java.io.StreamTokenizer eram o que havia de melhor quando se precisava ler e interpretar texto (salvo APIs fora do padrão J2SE). A nova API para expressões regulares é uma alternativa mais poderosa, capaz de simplificar a resolução dos mesmos problemas, bem como outros significativamente mais complexos.

Aplicações

Expressões regulares vêm sendo utilizadas há décadas. Seus usos vão dos mais básicos (como no comando DOS “dir *.txt”), aos mais avançados (por exemplo, em uma ferramenta que procura possíveis erros de digitação num documento, tais como palavras duplicadas). Em geral, expressões regulares constituem uma linguagem especializada que permite resolver problemas no processamento de informações representadas em forma textual. Alguns problemas envolvem documentos narrativos, como no caso das palavras duplicadas; outros envolvem dados estruturados, como no exemplo que veremos a seguir.

Nota: é interessante observar que tecnologias XML, em particular XPath, tornam geralmente desnecessário o uso de expressões regulares no processamento de documentos XML. Porém, a necessidade de processar documentos textuais em formatos não-XML é muito comum.

Sintaxe e semântica

Sintaticamente, uma expressão regular é uma sequência de caracteres arbitrários. Certos caracteres e combinações de caracteres têm significado especial. Semanticamente, cada expressão regular representa um conjunto de possíveis fragmentos de texto. Por exemplo, uma palavra ou número, uma sequência de caracteres com um certo prefixo ou sufixo, uma palavra seguida de um número ou de outra palavra, um certo caractere no final da linha, e assim por diante.

Vejamos alguns exemplos concretos (aqui e no resto do artigo, escrevemos uma expressão regular como uma sequência de caracteres entre aspas duplas):" [...] continue lendo...

Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados