A: 

It matches everything, but the capture group will only catch what's at the end. Your only option here is to use a regex to eat the first part, then create another to eat and match the params one at a time, then repeatedly call Matcher.find() on that part of the input and pull out the param. You can then use another regex to eat the rest of the input. This will be an ugly mess, which is why you should use either a parser generator or an XML parser instead.

Jeremy W. Sherman
Is there a way to return the subgroup values as a concatenated csv string? Like: "java.lang.String;java.lang.String" for example?
Rodrigo Marcuschi
Not that I'm aware of (though I don't know what you mean by "subgroup values").
Jeremy W. Sherman
What I mean is: in my case, the java.lang.String is captured twice, because of the pattern, but only the last occurrence is displayed. I'd like to retain all occurrences, if possible.
Rodrigo Marcuschi
No standard library method does that. To get at the subgroup values, you have to turn each into a single group value. That's why I recommend calling `Matcher.find()` in a loop to match each parameter, one at a time, and extract the value of the matching group.
Jeremy W. Sherman
With C#, you can use CaptureCollection to acquire all the captures by that particular group. That's what I wanted. =/ But I did what you suggested, and transformed it into 2 regexes. Thank you very much. :)
Rodrigo Marcuschi