Java Regex引擎崩溃

正则表达式 – ([^=](\\s*[\\w-.]*)*$)

测试字符串 – paginationInput.entriesPerPage=5

Java Regex引擎崩溃/历时(> 2分钟)找到匹配项。 以下测试输入不是这种情况:

 paginationInput=5 paginationInput.entries=5 

我的要求是获取= 右侧的字符串并用某些东西替换它。 除了上面提到的输入之外,上述模式正在做得很好。

我想了解错误的原因以及如何针对我的要求优化正则表达式以避免其他特殊情况。

您可以使用后面的外观来确保您的字符串从=后面的字符开始:

 (?<=\\=)([\\s\\w\\-.]*)$ 

至于它崩溃的原因,它是该组织的第二个* 。 我不确定你为什么需要它,因为这听起来像你要求:

  • 一个单一的角色,除了平等
  • 然后0或更多重复以下组:
    • 任何数量的空白区域
    • 然后任意数量的单词字符,破折号或点
  • 字符串结束

无论如何,取出* ,它不再永远旋转,但我仍然会使用后面的外观去寻找更具体的正则表达式。

另外,我不知道你是如何使用它的,但为什么你在那里有$ ? 然后你只能匹配字符串中的最后一个(如果你有多个)。 看起来你会更好地预测新线结束: (?=\\n|$)

[ 编辑 ]:下面的每个评论更新。

尝试这个:

 =\\s*(.*)$