Posts tagged java
Expressões regulares
0Não sei se já mencionei aqui mas há um tempo atrás estagiei um bom tempo construindo robôs de captura de conteúdo na web pra um sistema de clipping. Dessa experiência adquiri uma certa familiaridade com regexes que trago sempre à mão. =P
Hoje, um usuário (leonardo.) postou uma dúvida no PBJUG e posto aqui a minha resposta pois pode servir pra outros que estão se iniciando na arte das expresões regulares.
O objetivo dele era capturar apenas o nome do jar de um caminho (ou grupos de caminhos, separados por “;”).
Por exemplo, extrair “outro.jar” da string “C:\leonardo\teste.jar;C:\leonardo\outro.jar“.
Um exemplo básico em Java:
import java.util.regex.*;
public class RegexTest {
public static void main (String args[]) {
CharSequence entrada = "C:\\leonardo\\teste.jar;C:\\leonardo\\outro.jar";
Pattern pattern = Pattern.compile(".*\\\\(.+\\.jar)$");
Matcher matcher = pattern.matcher(entrada);
if (matcher.find()) {
System.out.println(matcher.group(1));
} else {
System.out.println("Não encontrado.");
}
}
}
Uma rápida explicação sobre o padrão:
O ‘.’ é um caractere coringa. Representa qualquer caractere exceto quebra de linha.
O ‘*’ é um quantificador. Representa zero ou mais vezes (qualquer número de vezes) o caractere que precede ele.
As barras são um moído. =P Queremos representar a contra-barra. Na expressão regular você tem que escapar ela com outra contra-barra. E no Java você tem que escapar cada contra-barra com outra contra-barra. Por isso ficam quatro.
O ‘+’ é outro caractere quantificador. Quer dizer uma ou mais vezes (no mínimo uma vez).
O ‘$’ representa o final da string. Ou seja, se tiver alguma coisa depois do ‘.jar’ o padrão não vai casar. Tem que vir no final da string.
Os parentesis determinam um ou mais grupos para extração.
No início pode parecer complicado mas com o uso você vai conhecendo os metacaracteres e sabendo construir os padrões com facilidade. Quando estiver familiarizado não vai querer deixar de usar. =P
Existem sites onde você pode testar os padrões interativamente, como aqui e aqui. O primeiro tem até as definições dos metacaracteres! Muito útil pra quem está começando.
Lista de exercícios de threads
0Amanhã tem prova de POD! =P
Aqui está um projeto Netbeans com a resolução dessa lista de exercícios sobre threads.
Como foi feito meio às pressas não tá muito organizado e muito menos didático mas pode ser útil a alguém.