Este artigo descreve o exemplo da correspondência regular Java de caracteres chineses na tag A no HTML. Compartilhe -o para sua referência, como segue:
Hoje, um amigo do grupo fez uma pergunta sobre expressões regulares, que contém o seguinte conteúdo:
<a href = 'www.baidu.coms = id32434#comentário'rewr> special432 </a> 453543 <a guhll ,, l> a1special123 Você está? </a> <a href = id = 32434#comentário'ewrer> Especial 2 </a> <a> Texto 2 </a> <a> Texto </a>
Agora você deseja combinar os caracteres chineses na tag <a> cujo conteúdo contém chinês, mas cujos atributos não contêm comentários.
A solução é a seguinte:
1. Combine primeiro a tag <a> que não inclui comentários;
2. Faça uma correspondência quadrática no resultado correspondente para produzir chinês;
O código é o seguinte:
pacote com.mmq.regex; importar java.util.regex.matcher; importar java.util.regex.pattern;/** * @use corresponde aos caracteres chineses na tag <a> de html * @projectName Stuff * @author mumaoqiang * @fulltname com.mmqrege 1.6.0* @version 1.0*/public class MatchChineSecharacters {/*** Com base na entrada, combine os caracteres chineses na tag <a> que contém chinês, mas não contém comentários* @param fonte de conteúdo para corresponder* @return caracteres chineses em <a> tag*/public static string contestesCharacters (string fonte) {/ // "<a ((?! Comentário).)*?> ([^<>]*? [// u4e00-// u9fa5]+[^<>]*?)+(? = </a>)"; Padrão padrão = padrão.compile (reg); Matcher Matcher = Pattern.Matcher (Origem); Caractere stringbuilder = new StringBuilder (); while (matcher.find ()) {string resultado = matcher.group (); System.out.println (resultado); // Faça o resultado regularização quadrática e corresponda à string de caracteres chinesa reg1 = "[// u4e00-// u9fa5]+"; Padrão p1 = padrão.compile (reg1); Matcher M1 = P1.Matcher (resultado); while (m1.find ()) {caractere.append (m1.group ()); } //System.out.println (caractere.toString ()); } retornar caractere.toString (); } public static void main (string [] args) {string resultado = matchchineSecharacters ("<a href = 'www.baidu.comds = id32434#comentário'rewr> special432 </a> 453543 <a guhll, l> a1special123hello23? href = id = 32434#comentário'ewrer> special2 </a> <a> text2 </a> <a> texto </a> "); System.out.println (resultado); }}O resultado da saída é o seguinte:
<a guhll ,, l> a1special123 Olá 123? <a> Texto na tag, como você está?
Aqui está uma explicação:
String reg = "<a ((?! Comentário).)*?> ([^<>]*? [// u4e00-// u9fa5]+[^<>]*?)+(? = </a>)";
Esse conteúdo correspondente contém chinês, mas o atributo de tag não contém comentários. Pesquisa para trás? Os atributos na tag são incertos, portanto não podem ser usados; [// u4e00-// u9fa5]+ corresponde a strings chineses; enquanto (? = </a>) usa pesquisa avançada? =, e a etiqueta final não será incluída no resultado.
Este problema foi resolvido. Se você deseja corresponder ao conteúdo especificado na tag especificada, também é fácil de melhorar. Se houver regras melhores, deixe uma mensagem para aprender um com o outro.
PS: Aqui estão duas ferramentas de expressão regular muito convenientes para sua referência:
Ferramenta de teste on -line de expressão regular JavaScript:
http://tools.vevb.com/regex/javascript
Ferramenta de geração online de expressão regular:
http://tools.vevb.com/regex/create_reg
Espero que este artigo seja útil para a programação Java de todos.