DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:
 
 

  Este é um post disponível para assinantes MVP
Este post também está disponível para assinantes da Java Magazine DIGITAL ou para quem possui Créditos DevMedia.  Clique aqui para saber mais!


Artigo Java Magazine 55 - Expressões Regulares em Java

Artigo da Revista Java Magazine - Edição 55.

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

Expressões Regulares em Java

Utilize os recursos da java.util.regex para processar texto com facilidade

Explore as APIs do Java para busca e substituição de texto, e veja como utilizá-las de forma eficiente

A linguagem Java não é famosa pelas suas facilidades de processamento de texto, pois o Java não foi criado originalmente para gerar páginas web, fazer parsing, ou processamento de documentos. No entanto, o Java hoje é utilizado em praticamente todos os domínios de aplicação, e já há um bom tempo possui uma completa gama de recursos para tratamento de texto.

Alguns destes recursos, aliás, são de estirpe do Java 1.0, e talvez falhemos em apreciá-los porque sempre estiveram disponíveis. Por exemplo, suporte ao padrão Unicode. Em linguagens e APIs que usei antes de Java, o suporte para Unicode não era default, e sua programação era complicada pela duplicação de APIs (versões ASCII e Unicode das mesmas funções) e necessidades constantes de fazer conversões entre estes formatos. No Java nada disso existe: qualquer texto – String ou char – é sempre Unicode. Só dá para perceber como o Java é simples ao compará-lo com outras linguagens, inclusive algumas que são famosas pelo suporte a processamento de texto.

Neste artigo, examinaremos uma API simples, porém poderosa e essencial: a java.util.regex.

Expressões regulares

As expressões regulares surgiram da teoria de linguagens formais, como uma alternativa simples e prática para processamento de trechos de texto curtos e pouco complexos. Tecnicamente, toda expressão regular (regex) é uma gramática, que define uma linguagem.

Uma linguagem, se você nunca se perguntou, tem a seguinte definição: é o conjunto – possivelmente infinito – de todos os inputs que são compatíveis com certa gramática. Por exemplo, a “linguagem Java” é o conjunto de todos os programas-fonte Java válidos. Ao rodarmos um compilador como o javac, este determina se o conteúdo de um arquivo fonte (*.java) pertence a este conjunto.

Há uma sofisticada teoria de gramáticas formais, parte da disciplina de Compiladores que faz parte de currículos de 3º. grau em computação, que permite criar parsers, compiladores e outras ferramentas que processam fontes de linguagens como Java, entre outros inputs altamente estruturados. Mas essa teoria é pesada e envolve ferramentas também complexas (no Java, representadas pelo JavaCC e ANTLR). Não é algo adequado para necessidades simples, muitas vezes ad-hoc, de parsing, como por exemplo: como determinar se uma string, como “07/12/2008”, contém uma data? Com expressões regulares (ou regex), isso é fácil: “\d\d/\d\d/\d\d\d\d”.

Uma regex é composta de meta-caracteres e caracteres comuns. No exemplo, ‘\d’ é um meta-caractere que significa “dígito”. Outra forma de especificar um dígito seria “[0-9]”, nesse caso usando a sintaxe de definição de classe de caracteres – mas como esta classe “dígito” é de uso muito comum, é abreviada pelo meta-caractere ‘\d’. A regex de exemplo significa: algum dígito, seguido de algum outro dígito, seguido de um ‘/’, etc. É comum haver várias formas de escrever a mesma regex: para dar outro exemplo, ao invés de “\d\d” poderíamos usar “\d{2}”. Neste artigo não vamos focar nas regex em si; veja o quadro “A linguagem de regex do Java”.

 

A linguagem de regex do Java

Uma descrição completa da sintaxe de regex do Java seria bastante longa, e é um assunto já conhecido de muitos leitores, por ser um recurso comum de várias linguagens e ferramentas (como grep, editores de texto, e até bancos de dados). A referência detalhada desta sintaxe está disponível no javadoc da classe java.util.regex.Pattern.

A maioria das linguagens de regex derivam do padrão POSIX 1003.2, o qual define duas formas de regex. A forma “obsoleta” ou “básica” é usada somente por poucos programas Unix antiquados, como o editor ed. A forma “estendida” ou “moderna” é bem mais popular, sendo amplamente utilizada por ferramentas de sistemas Unix / Linux e também muitas linguagens e aplicações."



ATENÇÃO! A exibição deste artigo foi interrompida.


  Este é um post disponível para assinantes MVP
Este post também está disponível para assinantes da Java Magazine DIGITAL ou para quem possui Créditos DevMedia.  Clique aqui para saber mais!






    0 COMENTÁRIO

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.


Nenhum comentário foi postado - seja o primeiro a comentar!



Publicidade
Autor
Osvaldo Pinali Doederlein

é Mestre em Engenharia de Software Orientado a Objetos e Arquiteto de Tecnologia da Visionnaire Informática, trabalhando em projetos de software e prospecção tecnológica.


Space do autor
Estatísticas
Favorito:
Comentários:
Feedback:
Utilidade:
0   0
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]


Este post está fechado. Saiba mais sobre a assinatura MVP!
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2012 - Todos os Direitos Reservados a web-03