Parsers compilador
//responsável por trabalhar com expressões regulares import java.util.regex.Pattern;
//Executa as operações da partida em uma seqüência de caracteres disparados no Pattern import java.util.regex.Matcher;
/** * Classe que formata o arquivo .bib * @author mariana */ public class Parser { /** * Pattern:Busca as strings nos formatos variados * o .compile busca um texto com uma padrão de expressãor regular */ /** * Em Pattern.DOTALL, a expressão. corresponde a qualquer caractere, incluindo um terminador de linha. * Por padrão, essa expressão não corresponde terminadores de linha. * busca geral */ private static final Pattern allCharacters = Pattern.compile("@(\\w+)\\s*\\{\\s*(\\w*[:+]?\\d*)\\s*,(.*?,\\s*\\})",Pattern.DOTALL); /** * busca os dentro de cada chave os campos */ private static final Pattern field = Pattern.compile("(\\w*)\\s*"+"\\=\\s*"+"[\"\\{]\\s*"+"([^\"\\}]*)"+"\\s*[\"\\}]"+"\\s*,\\s*"); /** * Realizará o parser e formatará o aquivo .bib * @param str Text to be formatted. * @return Formatted text. */ static public String editBib(String str) { //valor final que será retornado String ret = ""; Matcher mat = allCharacters.matcher(str); // busca para serparar os artigos while (mat.find()) { // pula de linha if (!ret.isEmpty()) ret += "\n\n";
// Agrupa os artigos //@value String group1 = mat.group(1); // @value description String group2 = getAuthor(mat.group(3)); // conteúdo String group3 = mat.group(3); // cabeçalgo do artigo ret += "@"+group1+"{"+group2+",\n"; //percorre o conteúdo Matcher content = field.matcher(group3);