【问题标题】:invalid regular expression : illegal repetition in Java无效的正则表达式:Java中的非法重复
【发布时间】:2015-07-03 22:02:53
【问题描述】:

我正在用java练习正则表达式,我的行有问题:

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

在 netbeans 中出现错误:

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

如何修复正则表达式?

【问题讨论】:

  • 正则表达式中的重复可以通过{numberOfOccurances}{min,max}{min,}来实现。如您所见,{} 是正则表达式特殊字符,因此如果您想将它们用作文字,它们需要转义。

标签: java regex


【解决方案1】:

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

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

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

【讨论】:

  • 我返回了以下错误:非法转义字符无效正则表达式:非法重复
  • @NickFuryy \ 是字符串中的特殊字符,它还需要转义以创建可以传递给正则表达式引擎的 \ 文字。试试"...\\{...\\}"
  • @Pshemo 是正确的;我已经调整了我的答案。请立即尝试。
猜你喜欢
  • 1970-01-01
  • 2013-12-02
  • 2015-12-22
  • 2023-03-19
  • 1970-01-01
  • 2016-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多