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

测试字符串-paginationInput.entriesPerPage=5

Java Regex Engine崩溃/花费了很长时间(> 2分钟)找到一个匹配项。以下测试输入不是这种情况:

paginationInput=5

paginationInput.entries=5


我的要求是掌握=右侧的String并将其替换为某些东西。除了上面提到的输入之外,上面的模式还不错。

我想了解错误的原因以及如何根据自己的需求优化正则表达式,以避免出现其他特殊情况。

最佳答案

您可以使用后面的内容来确保您的字符串以=之后的字符开头:

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


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


单个字符,等于
然后对以下组进行0次或更多次重复:

任意数量的空白
然后,任意数量的文字字符,破折号或点

字符串结尾


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

另外,我不知道您如何使用此功能,但是为什么要在其中使用$?然后,您只能匹配字符串中的最后一个(如果您有多个)。似乎最好还是先换行或结束:(?=\\n|$)

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

09-03 21:44