Apa itu ekspresi biasa
Ekspresi reguler adalah spesifikasi yang dapat digunakan untuk pencocokan pola dan penggantian. Ekspresi reguler adalah pola literal yang terdiri dari karakter biasa (seperti karakter A hingga Z) dan karakter khusus (MetaCharacters). Ini digunakan untuk menggambarkan satu atau lebih string untuk dicocokkan saat mencari tubuh literal. Ekspresi reguler bertindak sebagai templat untuk mencocokkan pola karakter dengan string yang dicari.
Java menggunakan ekspresi reguler untuk mengekstrak data
Ekspresi reguler Java sangat berguna. Sebelumnya, mereka biasa membagi teks TX 3M besar menjadi beberapa teks kecil. Kata -kata yang ditulis dalam C# sangat ringkas, dan kodenya hanya sekitar dua puluh baris. Saya menulisnya di Java hari ini. Benar saja, Java sangat bertele -tele.
Saya tidak akan memposting kode untuk membagi file. Saya terutama akan memposting cara menggunakan ekspresi reguler untuk mengelompokkan string besar:
Misalnya, sekarang ada file teks endlist.txt dengan konten berikut:
1300102, Beijing 1300103, Beijing 1300104, Beijing 1300105, Beijing 1300106, Beijing 1300107, Beijing 1300108, Beijing 1300109, Beijing 1300110, Beijing 1300111, Beijing 1300112, Beijing 1300111, Beijing 1300112, Beijing 1300111, Beijing 1300112, Beijing 1300111, Beijing 1300112, Beijing 130011111 1300115, Beijing 1300116, Beijing 1300117, Beijing 1300118, Beijing 1300119, Beijing
Angka tujuh digit mewakili tujuh digit pertama dari nomor ponsel, dan karakter Cina di belakangnya menunjukkan tempat kepemilikan nomor tersebut. Sekarang saya ingin menulis konten ini ke dalam file -file ini masing -masing sebagai 130 131 132 ... masing -masing.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 = ""; coba {file = file baru (childpath); buffer = stringBuffer baru (); InputStreamReader ISR = InputStreamReader baru (FileInputStream baru (file), "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 (); } Peta <string, arrayList <string>> resultMap = new HashMap <String, ArrayList <String> (); untuk (int i = 0; i <10; i ++) {resultMap.put ("13"+i, ArrayList baru <string> ()); } Pola pola = pola.compile ("(// d {3}) (// d {4}, [/u4e00-/u9fa5]*// n)"); Pencocokan pencocokan = pola.matcher (data); while (matcher.find ()) {resultMap.get (matcher.group (1)). Tambah (matcher.group (2)); } untuk (int i = 0; i <10; i ++) {if (resultMap.get ("13" + i) .size ()> 0) {coba {file outfile = file baru ("src/13" + i + ".txt"); FileOutputStream outputStream = FileOutputStream baru (OutFile); OutputStreamWriter writer = outputStreamWriter baru (outputStream, "UTF-8"); ArrayList <String> templist = resultMap.get ("13" + i); untuk (int j = 0; j <templist.size (); j ++) {writer.append (resultMap.get ("13"+i) .get (j)); } writer.close (); outputStream.close (); } catch (Exception e) {// TODO Auto-Entoerated Catch Block E.PrintStackTrace (); }}}}Baris 24 menggunakan ekspresi reguler "(// d {3}) (// d {4}, [/u4e00-/u9fa5]*// n)" Isi di masing-masing () adalah grup, indeks dimulai dari 1, dan 0 mewakili seluruh ekspresi. Oleh karena itu, ungkapan ini dibagi menjadi dua kelompok. Grup pertama mewakili 3 angka, dan grup kedua mewakili 4 angka ditambah beberapa karakter Cina plus karakter garis baru. Ekstraksi ditunjukkan pada baris 26-28.
Meringkaskan
Di atas adalah seluruh konten artikel ini. Saya berharap konten artikel ini akan membantu studi atau pekerjaan Anda. Jika Anda memiliki pertanyaan, Anda dapat meninggalkan pesan untuk berkomunikasi.