Java 提取“中包含的值时出现问题”;()";用正则表达式

Java 提取“中包含的值时出现问题”;()";用正则表达式,java,regex,Java,Regex,提取包含在“()”中的值时,我对正则表达式有问题 下面是我使用的java问题。我不知道它有什么毛病 Pattern PARSER = Pattern.compile("\\([^\\(\\)]+?\\)"); Matcher listMatcher = PARSER.matcher("((\"as_station_id\", string), hello World (\"as_parameter\", string))"); boolean listFind = listMatcher

提取包含在“()”中的值时,我对正则表达式有问题

下面是我使用的java问题。我不知道它有什么毛病

Pattern PARSER = Pattern.compile("\\([^\\(\\)]+?\\)");
Matcher listMatcher = PARSER.matcher("((\"as_station_id\", string), hello World (\"as_parameter\",     string))");
boolean listFind = listMatcher.find();
if (listFind) {
    for (int i = 0; i <= listMatcher.groupCount(); i++) {
    String listMatch = listMatcher.group(i);
    System.out.println(listMatch);
    }
}
预期产出:

("as_station_id", string)
("as_parameter", string)
任何感谢的帮助

.find()
仅适用一次;您需要在其上循环查找所有匹配项:

while (listMatcher.find())
    // operate on listMatcher
当没有更多匹配项时,
.find()
将返回
false

另外,
.group(n)
将返回正则表达式中与
n
th捕获组匹配的文本(而您没有);特殊情况
.group(0)
将返回所有匹配的内容。它相当于
.group()

因此,您的循环实际上应该是:

while (listMatcher.find())
    System.out.println(listMatcher.group());

我已经测试过了。这在在线正则表达式测试程序中运行良好,但在我的java代码中不起作用。您不需要在字符类中转义参数<代码>[^()]已足够,我已将其更改为“\([^()]+?\”,但仍无法工作。
while (listMatcher.find())
    System.out.println(listMatcher.group());