Я не могу использовать предоставленное вами регулярное выражение для соответствия properCase[ARG1, ARG2]
, но чтобы ответить на ваш вопрос в более общем плане, вы должны использовать группы без захвата (?:your_regex)
, чтобы не включать его в группы соответствия
РЕДАКТИРОВАТЬ:
Если вы не состоите в браке с использованием одного регулярного выражения для анализа, рассмотрите следующее: разделите строку на группы имени функции и аргументов, а затем разделитегруппа аргументов по разделителю,
import java.util.regex.*
String regex="([a-zA-Z0-9]+)\\[([ ,.a-zA-Z0-9]+)\\]"
Pattern funcPattern = Pattern.compile(regex);
Matcher m = funcPattern.matcher("properCase[ARG1, ARG2, class.otherArg]");
System.out.println("Match found: " + m.matches());
System.out.println("Total matches are: " + m.groupCount());
if (m.matches())
{
for (int index= 0 ; index <= m.groupCount(); index++)
{
System.out.println("Group number "+ index + "is: " +m.group(index));
}
}
println "Arguments: " + m.group(2).split(",");
Производит:
Match found: true
Total matches are: 2
Group number 0is: properCase[ARG1, ARG2, class.otherArg]
Group number 1is: properCase
Group number 2is: ARG1, ARG2, class.otherArg
Arguments: [ARG1, ARG2, class.otherArg]