2017-07-24 2 views
0

Ich versuche, eine Zeichenfolge zu spalten alsSplit reg Ausdruck

erwartet
String str="COMPLEX:[A(100),B(0)][80]:[B(100),A(0)][20]"; 
String [] tokens = str.split("[\\[\\]]"); 

Ausgang folgt:

COMPLEX: 
A(100),B(0) 
80 
B(100),A(0) 
20 

Aber oben reg epx in Split-Funktion gibt mir Ausgabe mit zusätzlichen neuen Linien wie

[0]->COMPLEX: 
[1]-> 
[2]->A(100),B(0) 
[3]-> 
[4]->80 so on 

Wie kann ich die zusätzlichen Linien beseitigen?

Antwort

1

Sie sollten nicht die zusätzliche Zeilenschaltung auf 1 bekommen, aber Sie sollten die eine auf 3 bekommen, weil Ihre Regex sowohl der Schließung] als auch der Öffnung [entspricht, so dass sie sich zweimal auf] [teilt. Schau in Ausdrücke, die gierig sind oder nicht.

Wahrscheinlich wird dies durch auch einschließlich] festgelegt wird [in Ihrem Ausdruck, vielleicht etwa so: nebeneinander wie möglich "[\\[\\]]+"

Mit den + wird es den Ausdruck Blick für so viele Klammer machen. Es wird also nur einmal bei ][ geteilt, weil ][ dem Ausdruck entspricht.

Read this wenn Sie daran interessiert sind Regex Gier und Faulheit zu verstehen.

(bearbeiten :) Auch, nach 80 erhalten Sie definitiv : als auch. Wenn Sie das nicht möchten, passen Sie Ihre Regex entsprechend an. (Sie tun, um die Doppelpunkt nach COMPLEX wollen, so kann man nicht nur den Doppelpunkt im Bereich hinzufügen) Etwas wie folgt aus: "[\\[\\]]+:?[\\[\\]]*"

+0

thanku Ihre Kommentare für mich gearbeitet –

+0

Sie sind willkommen! Lesen Sie auch meine Bearbeitung, wenn Sie die erwartete Ausgabe erhalten möchten und nicht den Doppelpunkt dazwischen haben. – Rick

Verwandte Themen