Escolar Documentos
Profissional Documentos
Cultura Documentos
Expresses Regulares
Tpicos Abordados
Introduo e motivao
Metacaracteres
Quantificadores
As classes Pattern e Matcher
Tokenizao com as classes String e Scanner
Textual data
b c
Pattern / Expression
Textual data
a z a
Pattern / Expression
Qual a resposta?
0e4
Metacaracteres
Permitem que a busca seja feita de forma
mais dinmica, ao invs de buscar um
caractere especfico
Metacaracter
Descrio
\d
Dgito (0 a 9)
\s
Espao em branco
\w
Qualquer caractere
Exemplos de Uso
Text
a 3
d 5 _ ? s
0 1 2 3 4 5 6 7
Patterns
\d
1, 4
\w
0, 1, 3, 4, 5, 7
\s
\w\d
0, 3
d\d
Caractere a ou b ou c
[?1%]
Caractere ? ou 1 ou %
Caracteres de a a f
[a-f0-9]
Caracteres de a a f ou 0 a 9
Metacaracteres e Strings
Muitas vezes os padres de procura (que
podem usar metacaracteres) so definidos em
objetos String
O problema que \ utilizado como
caractere de escape em strings
\n = quebra de linha
\t = tabulao
Metacaracteres e Strings
String p = "\d";
No compila
String p = "\\d";
OK
String p = "\w\d";
No compila
String p = "\\w\\d";
OK
Quantificadores
Os quantificadores permitem especificar
padres baseados em sequncia
Ex: zero ou mais dgitos, uma ou mais letras, um
ou nenhum espao em branco, etc.
Quantificador
Significado
Exemplos de Uso
Expresso regular para representar um CEP
nos seguintes formatos
34509-390, 34509 390, 34509390
5 dgitos
3 dgitos
\d\d\d\d\d([\s-])?\d\d\d
Zero ou um espao em
branco ou hfen
Os parntesis indicam os dados
associados ao quantificador
Exemplos de Uso
Expresso regular para representar uma string
composta por uma ou mais letras (maisculas
ou minsculas), um hfen e um ou mais
nmeros
Letras
Nmeros
([A-Za-z])+-([0-9])+
Hfen
Encontra o padro
String encontrada
Resultado
1 => abb
6 => ab
Substituio de Padres
A classe Matcher, alm de encontrar padres,
capaz de realizar substituies no texto
Pattern p = Pattern.compile("bc");
Matcher m = p.matcher("abcabcabcab");
StringBuffer sb = new StringBuffer();
while (m.find()) {
m.appendReplacement(sb, "XX");
}
m.appendTail(sb);
Resultado
Vai escrevendo o
texto substitudo
em sb
Adiciona sb o
restante do texto
aXXaXXaXXab
Substituio de Padres
Os mtodos replaceFirst() e replaceAll() da
classe String tambm so bastante utilizados
para substituio com base em padres
String s = "abc0def1ghi2";
s.replaceFirst("\\d", "-");
abc-def1ghi2
s.replaceAll("\\d", "-");
abc-def-ghi-
Tokenizao
o processo de dividir uma grande
quantidade de dados em pedaos menores,
chamados tokens
Um delimitador utilizado para indicar como
os tokens sero divididos
Expresses regulares podem ser utilizadas como
delimitadores
Exemplos de Tokenizao
a,b,c,d,e
","
a
b
c
d
e
a0b00c000d0000e
"0+"
a
b
c
d
e
Um ou mais zeros so
usados como delimitador
"\."
a
b
c
d
e
a.b.c.d.e
O Mtodo split()
A classe String possui o mtodo split(),
utilizado para dividir um texto em tokens
String texto = "a<>b<>c<>d";
String[] tokens = texto.split("<>");
Resultado
a
b
c
d
Delimitador
O mtodo split()
retorna um String[]
A Classe Scanner
A classe Scanner excelente para trabalhar
com tokenizao
Vantagens
Os dados de entrada podem estar em arquivos,
streams ou strings
Controle no processo de tokenizao, que feito
em loop
Converso automtica para tipos primitivos
Extrai os tokens j
convertidos
Colocando em Prtica...