Java,正则表达式捕获多次出现的模式

时间:2012-11-08 16:36:17

标签: java regex string

这是我原来的字符串:

String response = "attributes[{"id":50,"name":super},{"id":55,"name":hello}]";

我正在尝试解析字符串并提取所有id值,例如 50个
55

Pattern idPattern = Pattern.compile("{\"id\":(.*),");
Matcher matcher = idPattern.matcher(response);

while(matcher.find()){
    System.out.println(matcher.group(1));
}


当我尝试打印该值时,我得到一个例外: java.util.regex.PatternSyntaxException: Illegal repetition
过去对正则表达式没有多少经验,但在网上找不到简单的解决方案。
感谢任何帮助!

3 个答案:

答案 0 :(得分:3)

Pattern.compile("\"id\":(\\d+)");

答案 1 :(得分:2)

{是正则表达式中的保留字符,应该进行转义。

\{\"id\":(.*?),

编辑:如果您要使用JSON,则应考虑使用专用的JSON解析器。它会让你的生活更轻松。见Parsing JSON Object in Java

答案 2 :(得分:2)

不要使用像*这样的贪婪匹配运算符,其.匹配任何字符。不必要的。 如果要提取数字,可以使用\d

"id":(\d+)

在Java字符串中,

Pattern.compile("\"id\":(\\d+)");