我在提取“()”
中包含的值时遇到了正则表达式的问题下面是我使用的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)
任何帮助表示赞赏
答案 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());