无效的正则表达式:Java中的非法重复

时间:2015-07-03 22:02:54

标签: java regex

我在java中练习正则表达式,我遇到了一行问题:

Pattern pattern = Pattern.compile("\"(.*?)\": {\"detected\": (.*?), \"version\": (.*?), \"result\": (.*?), \"update\": (.*?)}");

在netbeans中,我收到错误:

  

无效的正则表达式:非法重复

如何修复正则表达式?

1 个答案:

答案 0 :(得分:6)

您需要使用反斜杠({)转义}\个字符。要获得文字\,您需要一个双反斜杠(\\):

Pattern pattern = Pattern.compile("\"(.*?)\": \\{\"detected\": (.*?), \"version\": (.*?), \"result\": (.*?), \"update\": (.*?)\\}");

否则,您似乎有{m,n}形式的奇怪(和非法)重复表达式,如\d{3,5}(3到5位)。