java regulärer Ausdruck, um Inhalt in eckigen Klammern zu extrahieren

Eingabezeile ist darunter

Item(s): [item1.test],[item2.qa],[item3.production] 

Können Sie mir helfen, einen regulären Java-Ausdruck zum Extrahieren zu schreiben?

 item1.test,item2.qa,item3.production 

von oben eingegebene Zeile?

   

Ein bisschen prägnanter:

 String in = "Item(s): [item1.test],[item2.qa],[item3.production]"; Pattern p = Pattern.compile("\\[(.*?)\\]"); Matcher m = p.matcher(in); while(m.find()) { System.out.println(m.group(1)); } 

Sie sollten einen positiven Lookahead und Lookbehind verwenden:

 (?< =\[)([^\]]+)(?=\]) 
  • (? < = [) Entspricht allem, was gefolgt wird von [
  • ([^]] +) Entspricht einer beliebigen Zeichenfolge, die nicht enthält]
  • (? =]) Entspricht alles vorher]

Ich würde nach dem Trimmen des vorhergehenden oder nachfolgenden Junks teilen:

 String s = "Item(s): [item1.test], [item2.qa],[item3.production] "; String r1 = "(^.*?\\[|\\]\\s*$)", r2 = "\\]\\s*,\\s*\\["; String[] ss = s.replaceAll(r1,"").split(r2); System.out.println(Arrays.asList(ss)); // [item1.test, item2.qa, item3.production]