正则表达式返回第一个括号中的单词

时间:2010-10-08 11:11:57

标签: java regex

示例:

  1. ((UINT32)((384UL*1024UL) - 1UL))应返回“UINT32”
  2. (char)abc应该返回“char”。
  3. ((int)xyz)应该返回“int”。

2 个答案:

答案 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);