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

时间:2014-02-13 13:15:02

标签: java regex

我在提取“()”

中包含的值时遇到了正则表达式的问题

下面是我使用的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_station_id", string)
("as_parameter", string)

任何帮助表示赞赏

1 个答案:

答案 0 :(得分:2)

.find()仅适用一次;你需要循环它以找到所有匹配项:

while (listMatcher.find())
    // operate on listMatcher
当没有更多匹配时,

.find()将返回false

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

所以,你的循环应该是:

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