регулярное выражение Java для извлечения содержимого в квадратных скобках - PullRequest
29 голосов
/ 24 октября 2010

строка ввода ниже

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

Можете ли вы помочь мне написать регулярное выражение Java для извлечения

item1.test,item2.qa,item3.production

сверху строки ввода?

Ответы [ 3 ]

79 голосов
/ 24 октября 2010

Немного более лаконично:

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));
}
8 голосов
/ 14 апреля 2015

Вы должны использовать позитивный взгляд и взгляд назад:

(?<=\[)([^\]]+)(?=\])
  • (? <= [) Соответствует всему, за которым следует [</li>
  • ([^]] +) Соответствует любой строке, не содержащей]
  • (? =]) Сопоставляет все до]
1 голос
/ 24 октября 2010

Я бы разделил после обрезки предыдущего или конечного мусора:

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]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...