Was ist ein regulärer Ausdruck
Regelmäßige Ausdrücke sind Spezifikationen, die für das Musteranpassung und den Austausch verwendet werden können. Ein regulärer Ausdruck ist ein wörtliches Muster, das aus gewöhnlichen Zeichen (wie Zeichen A bis Z) und Sonderzeichen (Metacharacter) besteht. Es wird verwendet, um eine oder mehrere Strings zu beschreiben, die bei der Suche nach dem Körper eines wörtlichen Suchens übereinstimmen sollen. Der reguläre Ausdruck fungiert als Vorlage für ein Zeichenmuster mit der durchsuchten Zeichenfolge.
Java verwendet regelmäßige Ausdrücke, um Daten zu extrahieren
Java reguläre Ausdrücke sind sehr nützlich. Vorher haben sie einen großen 3M -TXT -Text in mehrere kleine Texte unterteilt. Die in C# geschriebenen Wörter sind sehr präzise und der Code ist nur ungefähr zwanzig Zeilen. Ich habe sie heute in Java geschrieben. Sicher genug, Java ist sehr wortreich.
Ich werde den Code nicht veröffentlichen, um die Datei zu teilen. Ich werde hauptsächlich posten, wie man reguläre Ausdrücke verwendet, um große Zeichenfolgen zu gruppieren:
Beispielsweise gibt es jetzt eine Endlist.txt -Textdatei mit dem folgenden Inhalt:
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, Peking 1300116, Peking 1300117, Peking 1300118, Peking 1300119, Peking
Die siebenstellige Nummer repräsentiert die ersten sieben Ziffern der Mobiltelefonnummer, und die chinesischen Zeichen dahinter geben den Platz der Besitzerschaft der Nummer an. Jetzt möchte ich diese Inhalte als 130 131 132 ... in diese Dateien schreiben.txt 131.txt 132.txt .......
public static void main (String args []) {File Datei = null; BufferedReader BR = NULL; StringBuffer buffer = null; String childpath = "src/endlist.txt"; String Data = ""; try {file = new Datei (ChildPath); buffer = new StringBuffer (); InputStreamReader ISR = New InputStreamReader (neuer FileInputStream (Datei), "UTF-8"); BR = neuer BufferedReader (ISR); int s; while ((s = br.read ())! = -1) {buffer.Append ((char) s); } data = buffer.toString (); } catch (Ausnahme e) {e.printstacktrace (); } Map <String, ArrayList <String >> resultMap = new HashMap <String, ArrayList <String >> (); für (int i = 0; i <10; i ++) {resultMap.put ("13"+i, New ArrayList <string> ()); } Muster muster = muster.comPile ("(// d {3}) (// d {4}, [/u4e00-/u9fa5]*// n)"); Matcher Matcher = muster.Matcher (Daten); while (matcher.find ()) {resultMap.get (matcher.group (1)). add (matcher.group (2)); } für (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); für (int j = 0; j <templist.size (); j ++) {writer.append (resultMap.get ("13"+i) .get (j)); } writer.close (); outputStream.close (); } catch (Ausnahme e) {// Todo automatisch generierter Block E. printstacktrace (); }}}}Zeile 24 verwendet den regulären Ausdruck "(// d {3}) (// d {4}, [/u4e00-/u9fa5]*// n)" Der Inhalt in jedem () sind eine Gruppe, der Index startet ab 1 und 0 repräsentiert den gesamten Ausdruck. Daher ist dieser Ausdruck in zwei Gruppen unterteilt. Die erste Gruppe repräsentiert 3 Zahlen, und die zweite Gruppe repräsentiert 4 Zahlen plus mehrere chinesische Zeichen sowie einen neuen Charakter. Die Extraktion ist in den Zeilen 26-28 gezeigt.
Zusammenfassen
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, der Inhalt dieses Artikels wird Ihnen bei Ihrem Studium oder Ihrer Arbeit helfen. Wenn Sie Fragen haben, können Sie eine Nachricht zur Kommunikation überlassen.