我在提取“()”内的值时遇到了正则表达式问题
下面是我同样使用的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)
任何帮助表示赞赏
最佳答案
.find()
仅适用一次;您需要遍历它以找到所有匹配项:
while (listMatcher.find())
// operate on listMatcher
没有更多匹配项时,
.find()
将返回false
。同样,
.group(n)
将返回与正则表达式中第n
个捕获组匹配的文本(并且您没有);特殊情况.group(0)
将返回所有匹配项。它等效于.group()
。因此,您的循环确实应该是:
while (listMatcher.find())
System.out.println(listMatcher.group());