这是我原来的字符串:
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
过去对正则表达式没有多少经验,但在网上找不到简单的解决方案。
感谢任何帮助!
答案 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+)");