使用正则表达式从Java中的圆括号内提取字符串

时间:2015-07-17 12:00:28

标签: java regex brackets

我试图从圆括号中提取字符串 我们说{我有John Doe (123456789)而我只想输出字符串123456789

我找到了this link和这个正则表达式:

/\(([^)]+)\)/g

然而,我无法弄清楚如何获得想要的结果。

任何帮助将不胜感激。谢谢!

4 个答案:

答案 0 :(得分:3)

String str="John Doe (123456789)";
System.out.println(str.substring(str.indexOf("(")+1,str.indexOf(")")));

我在这里执行字符串操作。我对正则表达式并不熟悉。

答案 1 :(得分:1)

在Java中,您需要使用

String pattern = "\\(([^()]+)\\)";

然后,您需要的值在.group(1)

String str = "John Doe (123456789)";
String rx = "\\(([^()]+)\\)";
Pattern ptrn = Pattern.compile(rx);
Matcher m = ptrn.matcher(str);
while (m.find()) {
  System.out.println(m.group(1));
}

请参阅IDEONE demo

答案 2 :(得分:1)

你需要在正则表达式中转义括号:

    String in = "John Doe (123456789)";

    Pattern p = Pattern.compile("\\((\\d*)\\)");
    Matcher m = p.matcher(in);

    while (m.find()) {
        System.out.println(m.group(1));
    }

答案 3 :(得分:1)

这对我有用:

@Test
public void myTest() {
    String test = "test (mytest)";
    Pattern p = Pattern.compile("\\((.*?)\\)");
    Matcher m = p.matcher(test);

    while(m.find()) {
        assertEquals("mytest", m.group(1));
    }
}