Код регулярного выражения Java для обработки {Item1} .Item2 в массив или список - PullRequest
1 голос
/ 19 января 2011

Может кто-нибудь дать мне несколько советов о том, как использовать Java RegEx для обработки:

{Элемент1} .Item2

чтобы получить массив или список, содержащий

  • Item1
  • Элемент2

Я думал о RegEx как:

   Pattern p = Pattern.compile("\\{(.+?)\\}\\.(.*?)");     
   Matcher match = p.matcher(mnemonicExpression); 
   while(match.find()) {     
    System.out.println(match.group());    
   }   

Но, похоже, это не работает.

Любая помощь будет высоко ценится.

С уважением

jcstock74

Ответы [ 2 ]

4 голосов
/ 19 января 2011

Вам нужно взять отдельные группы совпадений 1 и 2. Используя group(), вы фактически делаете group(0), то есть весь матч.Кроме того, последний .*? не должен быть неохотным, в противном случае он соответствует просто пустой строке.

Попробуйте это:

Pattern p = Pattern.compile("^\\{(.+?)\\}\\.(.*)$");
//                                \ /        \/
//                                 1          2

Matcher match = p.matcher("{Item1}.Item2");
while(match.find()) {
  System.out.println("1 = " + match.group(1));
  System.out.println("2 = " + match.group(2));
}

, что приводит к:

1 = Item1
2 = Item2
1 голос
/ 20 января 2011

Бонусный ответ: у этой веб-страницы есть очень хороший тестер регулярных выражений, использующий java.util.regex. Это лучший способ проверить ваши выражения, и он даже предоставляет экранированную строку Java, которую вы будете использовать в Pattern.compile():

http://www.regexplanet.com/simple/index.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...