java regular expression pour extraire le contenu entre crochets

ligne d'entrée est en dessous de

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

Pouvez-vous m'aider à écrire une expression régulière Java pour extraire

item1.test,item2.qa,item3.production

à partir de ci-dessus de l'entrée de la ligne?

25
demandé sur so_mv 2010-10-24 01:17:26
la source

3 ответов

Un peu plus concis:

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));
}
72
répondu Jared 2010-10-24 01:55:55
la source

vous devez utiliser un lookahead positif et lookbehind:

(?<=\[)([^\]]+)(?=\])
  • (?< = [) Correspond à tout suivi de [
  • ([^]]+) correspond à toute chaîne ne contenant pas ]
  • (?=]) Correspond à tout ce qui est avant ]
7
répondu gnom1gnom 2015-04-14 12:00:26
la source

je voudrais split après le parage avant ou après indésirable:

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]
1
répondu maerics 2011-07-11 04:35:08
la source

Autres questions sur