示例:
((UINT32)((384UL*1024UL) - 1UL))
应返回“UINT32”(char)abc
应该返回“char”。((int)xyz)
应该返回“int”。答案 0 :(得分:4)
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);
答案 1 :(得分:0)
Pattern p = Pattern.compile("\\(([^\\(\\)]+?)\\)");
Matcher m = p.matcher(input);
if (m.find())
result = m.group(1);