2016-05-07 7 views
1

Ich habe eine Zeichenfolge wie folgt:Split Zeichenfolge nur durch Komma wenn sie in Klammern ist

String str = "[a,b,c,d],[1,2,3,4],[a,gf,d,cvb],[4,3,2,1]"; 

ich diese Zeichenfolge in vier Teile geteilt werden soll, wie folgt aus:

[a, b, c, d]
[1,2,3,4]
[a, gf, d, CVB]
[4,3,2,1]

Ich versuchte dies:

List<String> splitWords = Arrays.asList(str.split("\\],\\[")); 

Als ich diese verwenden, erhalte ich folgende Strings:

[a, b, c, d
1,2,3,4
a, gf , d, cvb
4,3,2,1]

In diesem Fall habe ich auch Klammern neben Komma entfernen, aber ich möchte nicht, dass zu tun. Was ist die Regex für mein Problem?

Antwort

0

diese regex tun können, was Sie suchen:

"[(. *?)]"

Beispiel:

String str = "[a,b,c,d],[1,2,3,4],[a,gf,d,cvb],[4,3,2,1]"; 
Pattern logEntry = Pattern.compile("\\[(.*?)\\]"); 
Matcher matchPattern = logEntry.matcher(str); 
while (matchPattern.find()) { 
    System.out.println("[" + matchPattern.group(1) + "]"); 
} 

das drucken wird:

[a, b, c, d]

[1,2,3,4]

[a, gf, d, CVB]

[4,3,2, 1]

das ist, was Sie suchen ...

+1

ich sehe, lassen Sie mich überprüfen und Korrekturen vornehmen, wenn eine –

+0

anwenden Ja, das ist besser. Ich werde das als richtig markieren. Ich habe es auch so gemacht: 'str = str.replaceAll (" \\ ",", "] \ n"); Liste splitWords = Arrays.asList (str.split ("\\ r? \\ n")); ' – nope

0

Versuchen Sie folgendes:

List<String> splitWords = Arrays.asList(str.split("],")); 
    for(int i = 0; i < splitWords.size()-1; i++) 
     splitWords.set(i, splitWords.get(i) + "]"); 
Verwandte Themen