Qu'est-ce qu'une expression régulière
Les expressions régulières sont des spécifications qui peuvent être utilisées pour la correspondance et le remplacement des motifs. Une expression régulière est un modèle littéral composé de caractères ordinaires (tels que les caractères A à Z) et des caractères spéciaux (métacharacteurs). Il est utilisé pour décrire une ou plusieurs cordes à égaler lors de la recherche du corps d'un littéral. L'expression régulière agit comme un modèle pour correspondre à un modèle de caractère avec la chaîne recherchée.
Java utilise des expressions régulières pour extraire les données
Les expressions régulières Java sont très utiles. Avant, ils divisent un grand texte TXT 3M en plusieurs petits textes. Les mots écrits en C # sont très concis, et le code n'est qu'environ vingt lignes. Je les ai écrits à Java aujourd'hui. Effectivement, Java est très verbeux.
Je ne publierai pas le code pour diviser le fichier. Je posterai principalement comment utiliser des expressions régulières pour regrouper les grandes chaînes:
Par exemple, il existe maintenant un fichier texte Endlist.txt avec le contenu suivant:
1300102, Pékin 1300103, Pékin 1300104, Pékin 1300105, Beijing 1300106, Beijing 1300107, Beijing 1300108, Beijing 1300109, Beijing 1300110, Beijing 1300111, Beijing 1300112, Beijing 1300113, Beijing 130014, Beijing 1300113, Beijing 130014, Beijing 1300113, Beijing 130014, Beijing 1300113, Beijing 130014 1300115, Pékin 1300116, Pékin 1300117, Pékin 1300118, Pékin 1300119, Pékin
Le numéro à sept chiffres représente les sept premiers chiffres du numéro de téléphone mobile, et les caractères chinois derrière lui indiquent le lieu de propriété du numéro. Maintenant, je veux écrire ces contenus dans ces fichiers comme 130 131 132 ... respectivement.txt 131.txt 132.txt .......
public static void main (String args []) {file file = null; BufferedReader br = null; StringBuffer Buffer = NULL; String childpath = "src / endlist.txt"; String data = ""; try {file = new File (childpath); buffer = new StringBuffer (); InputStreamReader ISR = new inputStreamReader (new FileInputStream (fichier), "utf-8"); br = new 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> ()); } Modèle motif = motifs.compile ("(// d {3}) (// d {4}, [/ u4e00- / u9fa5] * // n)"); Matcher Matcher = Pattern.matcher (données); while (Matcher.Find ()) {resultMap.get (Matcher.Group (1)). Add (Matcher.Group (2)); } pour (int i = 0; i <10; i ++) {if (resultMap.get ("13" + i) .size ()> 0) {try {file 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 <templist.size (); j ++) {writer.append (resultmap.get ("13" + i) .get (j)); } writer.close (); outputStream.close (); } catch (exception e) {// TODO Bloc de capture généré automatiquement e.printStackTrace (); }}}}La ligne 24 utilise l'expression régulière "(// d {3}) (// d {4}, [/ u4e00- / u9fa5] * // n)" Les contenus dans chaque () sont un groupe, l'index commence à partir de 1, et 0 représente toute l'expression. Par conséquent, cette expression est divisée en deux groupes. Le premier groupe représente 3 nombres, et le deuxième groupe représente 4 nombres plus plusieurs caractères chinois plus un caractère Newline. L'extraction est indiquée dans les lignes 26-28.
Résumer
Ce qui précède est l'intégralité du contenu de cet article. J'espère que le contenu de cet article sera d'une aide à votre étude ou à votre travail. Si vous avez des questions, vous pouvez laisser un message pour communiquer.