2014-11-25 2 views
-1

Я следующий текст, из которого мне нужно, чтобы получить конкретную информацию (может быть многострочным):Регулярное выражение для извлечения повторяющейся группы

Type [Hello] Server [serverName]. [BC]. [CD] [D" + 
       "E]. [FH]. [MN]. [CS]., ID = 53ec9d" 

Из текста я должен получить:

serverName и тому следующие записи в пределах [], уход за которыми разделен " .". Они могут повторяться сколько угодно раз. Их окончание обозначается ".,".

Таким образом, в описанном выше случае мой вывод должен быть:

serverName : serverName

и ценности должны быть:

BC , CD, DE,FH, MN,CS 

Нужна помощь по требованию.

+1

Вы забыли '' .' после [CD] '? –

+1

Каков ваш подход? Поделитесь своими попытками с нами, чтобы вы могли получить лучшую помощь. – Maroun

+1

что с [D "+" E] –

ответ

0

Для идеи запуска:

public static void main(String[] args) { 
    String s = "Type [Hello] Server [serverName]. [BC]. [CD] [DE]. [FH]. [MN]. [CS]., ID = 53ec9d"; 

    /* 
    * anything that is surrounded by [ ] characters and doesn't contain [ ] 
    */ 
    Pattern compile = Pattern.compile("\\[([^\\[\\]]+)\\]"); 
    Matcher matcher = compile.matcher(s); 

    boolean first = true, second = true; 
    while (matcher.find()) { 

     if (first) { // avoiding [Hello] 
      first = false; 
      continue; 
     } 

     // remove surrounding [ ] 
     String currentValue = matcher.group(1).replaceAll("\\[|\\]", ""); 

     // first find is treated differently 
     if (second) { 
      second = false; 
      System.out.println("serverName = " + currentValue); 
      continue; 
     } 

     System.out.println(currentValue); 
    } 
} 

выход:

serverName = serverName 
BC 
CD 
DE 
FH 
MN 
CS 
Смежные вопросы