Este artículo describe la operación de la extracción regular de contenido de Java en los soportes. Compártelo para su referencia, como sigue:
Una vez encontré un problema en mi trabajo, que era que necesitaba extraer el contenido en cada soporte en una cadena. Busqué en línea y descubrí que se pueden usar expresiones regulares para extraer el contenido entre paréntesis. La implementación específica es la siguiente:
import java.util.arrayList; import java.util.list; import java.util.regex.matcher; import java.util.regex.pattern; public ExtractMessage {public static void main (string [] args) {string msg = "performemanager [1st backet] producto [2nd bracket] <[3 3rds) {string msg =" interpretadora [1st backet] producto [2nd bracket] <[3 3rs) ~ "79 ~"; List <String> list = ExtractMessagyGeRegular (MSG); for (int i = 0; i <list.size (); i ++) {system.out.println (i+"->"+list.get (i)); }} / ** * Utilice expresiones regulares para extraer el contenido en los soportes * @param msg * @return * / public static list <String> ExtractMessageByregular (string msg) {list <string> list = new ArrayList <String> (); Patrón p = patrón.compile ("(// [[^//]]*//])"); Matcher M = p.matcher (MSG); while (m.find ()) {list.Add (m.group (). subcadena (1, m.group (). longitud ()-1)); } Lista de retorno; }}El resultado de salida es el siguiente:
0-> el primer soporte
1-> El segundo soporte
2-> el tercer soporte
Esto completó rápidamente el trabajo del código, pero luego descubrí que si los soportes aún contienen soportes, la expresión regular perderá su efecto. Tuve que encontrar una manera de resolverlo yo mismo. Después de la investigación, finalmente encontré una solución. La implementación específica es la siguiente:
paquete com.perry.test; import java.util.arrayList; import java.util.list; import java.util.regex.matcher; import java.util.regex.pattern; public ExtractMessage {public static void main (string [] args) {string msg = " El soporte contiene soportes]] <[3rd soporte] 79 ~ "; List <String> list = ExtractMessage (MSG); for (int i = 0; i <list.size (); i ++) {system.out.println (i+"->"+list.get (i)); }} / ** * Extraiga el contenido en los soportes e ignore los soportes en los soportes * @param msg * @return * / public static list <String> ExtractMessage (String Msg) {list <String> list = new ArrayList <String> (); int inicio = 0; int startflag = 0; int endflag = 0; for (int i = 0; i <msg.length (); i ++) {if (msg.charat (i) == '[') {startFlag ++; if (startflag == endflag + 1) {start = i; }} else if (msg.charat (i) == ']') {endflag ++; if (endflag == startflag) {list.add (msg.substring (inicio + 1, i)); }}} Lista de retorno; }}El resultado de salida es el siguiente:
0-> el primer soporte
1-> El segundo soporte [el soporte contiene soportes]
2-> el tercer soporte
La idea principal es atravesar la cadena y marcar las posiciones de principio y final de los soportes. Si se trata de la posición final correspondiente a la posición inicial de los soportes, los recuentos de la posición de inicio y la posición final son los mismos, por lo que se intercepta el contenido de los soportes completos.
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
Para obtener más información sobre los algoritmos Java, los lectores interesados en este sitio pueden ver los temas: "Habilidades de expresión regular de Java", "Estructura de datos Java y tutorial de algoritmo de Java", "Habilidades de nodo DOM de Operación Java", "Archivo de Java y resumen de habilidades de operación de directorio" y "Sumación de habilidades de operación de cache de Java".
Espero que este artículo sea útil para la programación Java de todos.