Archive for dezembro, 2009
Seminário sobre Data Mining
0Sábado passado foi a apresentação do seminário sobre data mining que Ângelo Vidal de Negreiros e eu fizemos para a disciplina de Inteligência Empresarial, do professor Paulo Costa. O documento escrito está disponível aqui no formato pdf e aqui está publicado no Google Docs. Os slides estão publicados aqui em pdf. Quem quiser discutir alguma coisa relacionada ou tirar alguma dúvida pode entrar em contato através dos e-mails que estão nos slides ou da área de contato do blog. Sobre as ferramentas e técnicas procure diretamente Ângelo que ficou responsável por essa parte do trabalho. :)
O trabalho tem um nível básico, com o objetivo de oferecer uma visão geral sobre data mining, suas aplicações e o que podemos conseguir através do uso dessas técnicas.
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.