Pattern p = Pattern.compile("\\(([^()]*)\\)");
String[] tests = {
"((UINT32)((384UL*1024UL) - 1UL))",
"(char)abc",
"((int)xyz)"
};
for (String s : tests) {
Matcher m = p.matcher(s);
if (m.find())
System.out.println(m.group(1));
}
Печать
UINT32
char
int
Объяснение регулярного выражения:
\\(
Начните с (
(
начать захват группы
[^()]*
все, кроме (
и )
0 или более раз
)
группа захвата конца
\\)
заканчиваются )
.
Использование регулярных выражений немного излишне. Вы также можете сделать
int close = s.indexOf(')');
int open = s.lastIndexOf('(', close);
result = s.substring(open+1, close);