Разбор выражения, содержащего повторяющиеся группы, с использованием регулярного выражения Java - PullRequest
1 голос
/ 15 июля 2011

Я пытаюсь разобрать строку, как показано ниже

"name1(value1),name2(value2),name3(value3),name4(value4),........", и так получается

Как я могу сделать это рекурсивно с группами?

Ответы [ 3 ]

2 голосов
/ 15 июля 2011
String s = "name1(value1),name2(value2),name3(value3),name4(value4),";

Pattern p = Pattern.compile(".*?\\((.*?)\\)");
Matcher m = p.matcher(s);

while(m.find()){
    System.out.println(m.group(1));
}
1 голос
/ 15 июля 2011

Я бы предпочел использовать операции Java-String для получения значений, но если вы хотите использовать регулярное выражение, вы можете использовать что-то похожее на это:

[^\(]*\([^\)]*\),

Должно быть достаточно стабильным

Вы можете проверить это здесь: http://regexr.com? 2u7u3

0 голосов
/ 15 июля 2011

Вы можете использовать matcher.find, попробуйте что-то вроде этого:

String input = "name1(value1),name2(value2),name3(value3),name4(value4)";

Matcher matcher = Pattern.compile(".*?[(].*?[)]").matcher(input);
while(matcher.find()) {
    System.out.println(matcher.group(0));
}

или просто используйте String.split так:

String input = "name1(value1),name2(value2),name3(value3),name4(value4)";
String[] split = input.split(",");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...