Artigo Java Magazine 55 - 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.
Clique aqui para ler esse artigo em PDF.
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”." [...] continue lendo...
Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo