public static void main(String[] args) {
String str = " <tr> <td><b>Nome0</b> <input type=checkbox name=c value=\"1e1\"><b>Nome1</b> </td> <td> <b>Nome2</b> </td> <td> [email removido] </td>";
Pattern p = Pattern.compile("<b>(.*?)</b>");
Matcher m = p.matcher(str);
while (m.find()){
System.out.println(m.group().replaceAll("</?b?B?>", ""));
}
}
_Renatu
Obrigado Flasoft pela ajuda.
Mas acho que nao expliquei bem meu problema.
Eu consegui pegar os nomes com o primeiro padrao que peguei.
Mas eu nao consegui pegar no mesmo padrao os nomes e os emails, por que parece que o tag TD nao é reconhecido pelo padrao.
Alguma sugestao?!?!?
T
thingol
Para parsear HTML é melhor usar um parser HTML; expressões regulares rapidamente ficam incontroláveis. De qualquer maneira:
importjava.util.regex.*;classExemploRegexp{publicstaticvoidmain(String[]args){Stringhtml="<b>Nome</b>\r\n"+"</td>\n"+"<td>\n"+"[email removido]\n"+"\n"+"</td>\n";// a) Usamos (?s) para que "." bata com "\n"// (você poderia também usar Pattern.compile (___, Pattern.DOTALL) // mas usar (?s) permite o uso com "String.replaceAll" e outros// lugares onde não se pode passar os parâmetros de "Pattern.compile")Patternpat=Pattern.compile("(?s)<b>(.*?)</b>.*?<td>(.*?)</td>");Matchermat=pat.matcher(html);if(mat.find()){for(inti=0;i<=mat.groupCount();++i){System.out.println("Group "+i+": ["+mat.group(i)+"]");}}else{System.out.println("No matches found");}}}
Existe algum lugar que eu possa ler pra saber essas “manhas” como as do (?s) ??
Nao achei isso nem no tutorial da sun nem na API
T
thingol
Uai, isso está na API, mas é um pouco difícil de entender.
Alguém postou aqui no site uma URL de um livro brasileiro que ensina tudo, e mais um pouco, sobre expressões regulares.
Luca
Olá
thingol:
Alguém postou aqui no site uma URL de um livro brasileiro
que ensina tudo, e mais um pouco, sobre expressões regulares.