Este artículo describe a los caracteres chinos en la etiqueta como un partido regular en Java. Compártelo para su referencia, como sigue:
Hoy, un amigo del grupo hizo una pregunta sobre expresiones regulares, que contiene el siguiente contenido:
<a href = 'www.baidu.comds = id32434#comment'rewr> especial432 </a> 453543 <a guhll ,, l> a1special123 ¿eres tú? </a> <a href = id = 32434#comment'ewrer> especial 2 </a> <a> Texto 2 </a> <a> Texto </a>
Ahora desea igualar los caracteres chinos en la etiqueta <a> cuyo contenido contiene chino pero cuyos atributos no contienen comentarios.
La solución es la siguiente:
1. Primero coincida con la etiqueta <a> que no incluye comentarios;
2. Haga una coincidencia cuadrática en el resultado correspondiente para producir chino;
El código es el siguiente:
paquete com.mmmq.regex; import java.util.regex.matcher; import java.util.regex.pattern;/** * @use coincida con los caracteres chinos en la etiqueta <a> de html * @projectName cosas * @author mumaoqiang * @fullname com.mmq.matchinesChinesCaracters 1.6.0* @version 1.0*/public class MatchChinesCharacters {/*** Basado en la entrada, coincidir con los caracteres chinos en la etiqueta <a> que contiene chino pero no contiene comentarios* @param Contenido de origen para que coincida* @return caracteres chinos en <a> etiqueta*/public static stringeCharacters (fuente de cadena (fuente de cadena) {////A> etiqueta de la etiqueta que contiene chino pero no contiene comentarios de comment string reg. "<a ((? Patrón patrón = patrón.compile (reg); Matcher matcher = patrón.matcher (fuente); StringBuilder caracteres = new StringBuilder (); while (matcher.find ()) {string result = matcher.group (); System.out.println (resultado); // Haga el resultado de la regularización cuadrática y coincide con la cadena de caracteres chino reg1 = "[// u4e00-// u9fa5]+"; Patrón P1 = Pattern.compile (Reg1); Matcher m1 = p1.matcher (resultado); while (m1.find ()) {caracteres.append (m1.group ()); } //System.out.println (caracteres.toString ()); } return caracteres.ToString (); } public static void main (string [] args) {string result = matchCeSeCharacterS ("<a href = 'www.baidu.comds = id32434#comment'rewr> especial432 </a> 453543 <a guhll, l> a1special123hello123? href = id = 32434#comment'ewrer> especial2 </a> <a> text2 </a> <a> texto </a> "); System.out.println (resultado); }}El resultado de salida es el siguiente:
<a guhll ,, l> a1special123 hola 123? <a> Texto en la etiqueta, ¿cómo estás?
Aquí hay una explicación:
Cadena reg = "<a ((?
Este contenido coincidente contiene chino, pero el atributo de etiqueta no contiene comentarios. ¿Búsqueda hacia atrás? <= No se puede usar, porque la búsqueda hacia atrás solo puede estar contento de longitud fija. Los atributos en la etiqueta son inciertos, por lo que no se pueden usar; [// u4e00-// u9fa5]+ coincide con las cuerdas chinas; mientras (? = </a>) usa la búsqueda de reenvío? =, y la etiqueta final no se incluirá en el resultado.
Este problema fue resuelto. Si desea que coincida con el contenido especificado en la etiqueta especificada, también es fácil de mejorar. Si hay mejores reglas, deje un mensaje para aprender unos de otros.
PD: Aquí hay dos herramientas de expresión regulares muy convenientes para su referencia:
JavaScript Herramienta de prueba en línea de expresión regular de JavaScript:
http://tools.vevb.com/regex/javascript
Herramienta de generación en línea de expresión regular:
http://tools.vevb.com/regex/create_reg
Espero que este artículo sea útil para la programación Java de todos.