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

3

我正在尝试从圆括号中提取字符串。
假设,我有John Doe (123456789),我只想输出字符串123456789

我找到了这个链接和这个正则表达式:

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

然而,我没有找到如何获得所需的结果。

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


你的输入和输出是什么?参考帖子展示了如何获取第一组的值。 - Wiktor Stribiżew
输入是一个字符串,输出也是一个字符串。 - Nir Tzezana
4个回答

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

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


2

这对我有效:

@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));
    }
}

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演示


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));
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接