Example:
((UINT32)((384UL*1024UL) - 1UL))
should return "UINT32"(char)abc
should return "char".((int)xyz)
should return "int".
Example:
((UINT32)((384UL*1024UL) - 1UL))
should return "UINT32"(char)abc
should return "char".((int)xyz)
should return "int". 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));
}
Prints
UINT32
char
int
Explanation of the regular expression:
\\(
Start with a (
(
start capturing group[^()]*
anything but (
and )
0 or more times)
end capturing group\\)
end with a )
.Using regular expressions is a bit of an overkill though. You could also do
int close = s.indexOf(')');
int open = s.lastIndexOf('(', close);
result = s.substring(open+1, close);