¿Qué es una expresión regular?
Las expresiones regulares son especificaciones que se pueden usar para la coincidencia y el reemplazo de patrones. Una expresión regular es un patrón literal compuesto por caracteres ordinarios (como los caracteres A a la Z) y los caracteres especiales (metacharacteres). Se usa para describir una o más cuerdas que se combinarán al buscar el cuerpo de un literal. La expresión regular actúa como una plantilla para que coincida con un patrón de caracteres con la cadena buscada.
Java utiliza expresiones regulares para extraer datos
Las expresiones regulares de Java son muy útiles. Antes, solían dividir un gran texto de 3M TXT en múltiples textos pequeños. Las palabras escritas en C# son muy concisas, y el código es solo unas veinte líneas. Los escribí hoy en Java. Efectivamente, Java es muy prolijo.
No publicaré el código para dividir el archivo. Publicaré principalmente cómo usar expresiones regulares para agrupar cuerdas grandes:
Por ejemplo, ahora hay un archivo de texto endlist.txt con el siguiente contenido:
1300102, Beijing 1300103, Beijing 1300104, Beijing 1300105, Beijing 1300106, Beijing 1300107, Beijing 1300108, Beijing 1300109, Beijing 1300110, Beijing 1300111, Beijing 1300112, Beijing 1300113, Beijing 1300114, Beijing 1300115, Beijing 1300116, Beijing 1300117, Beijing 1300118, Beijing 1300119, Beijing
El número de siete dígitos representa los primeros siete dígitos del número de teléfono móvil, y los caracteres chinos detrás de él indican el lugar de propiedad del número. Ahora quiero escribir estos contenidos en estos archivos como 130 131 132 ... respectivamente.txt 131.txt 132.txt .......
public static void main (string args []) {file file = null; BufferedReader BR = NULL; Stringbuffer buffer = null; Cadena childPath = "src/endlist.txt"; String data = ""; prueba {archivo = nuevo archivo (childPath); buffer = new StringBuffer (); InputStreamReader isr = new InputStreamReader (new FileInputStream (archivo), "UTF-8"); Br = nuevo BufferedReader (ISR); int s; while ((s = br.read ())! = -1) {buffer.append ((char) s); } data = buffer.ToString (); } catch (Exception e) {E.PrintStackTrace (); } Map <String, ArrayList <String>> resultMap = new HashMap <String, ArrayList <String> (); for (int i = 0; i <10; i ++) {resultMap.put ("13"+i, new ArrayList <String> ()); } Pattern Pattern = Pattern.Compile ("(// d {3}) (// d {4}, [/u4e00-/u9fa5]*// n)"); Matcher matcher = patrón.matcher (datos); while (matcher.find ()) {resultMap.get (matcher.group (1)). add (matcher.group (2)); } for (int i = 0; i <10; i ++) {if (resultMap.get ("13" + i) .size ()> 0) {try {archivo outFile = new File ("src/13" + i + ".txt"); FileOutputStream OutputStream = new FileOutputStream (OUTFILE); OutputStreamWriter Writer = new OutputStreamWriter (outputStream, "UTF-8"); ArrayList <String> TEMPLIST = resultMap.get ("13" + i); for (int j = 0; j <tempplist.size (); j ++) {writer.append (resultMap.get ("13"+i) .get (j)); } escritor.close (); outputStream.close (); } Catch (Exception e) {// TODO Auto Generado Bloque E.PrintStackTrace (); }}}}La línea 24 usa la expresión regular "(// d {3}) (// d {4}, [/u4e00-/u9fa5]*// n)" Los contenidos en cada () son un grupo, el índice comienza desde 1 y 0 representa la expresión completa. Por lo tanto, esta expresión se divide en dos grupos. El primer grupo representa 3 números, y el segundo grupo representa 4 números más múltiples caracteres chinos más un carácter nuevo. La extracción se muestra en las líneas 26-28.
Resumir
Lo anterior es todo el contenido de este artículo. Espero que el contenido de este artículo sea de ayuda para su estudio o trabajo. Si tiene alguna pregunta, puede dejar un mensaje para comunicarse.