我在java中练习正则表达式,我遇到了一行问题:
Pattern pattern = Pattern.compile("\"(.*?)\": {\"detected\": (.*?), \"version\": (.*?), \"result\": (.*?), \"update\": (.*?)}");
在netbeans中,我收到错误:
无效的正则表达式:非法重复
如何修复正则表达式?
答案 0 :(得分:6)
您需要使用反斜杠({
)转义}
和\
个字符。要获得文字\
,您需要一个双反斜杠(\\
):
Pattern pattern = Pattern.compile("\"(.*?)\": \\{\"detected\": (.*?), \"version\": (.*?), \"result\": (.*?), \"update\": (.*?)\\}");
否则,您似乎有{m,n}
形式的奇怪(和非法)重复表达式,如\d{3,5}
(3到5位)。