正则表达式模式-([^=](\\s*[\\w-.]*)*$)
测试字符串-paginationInput.entriesPerPage=5
Java Regex Engine崩溃/花费了很长时间(> 2分钟)找到一个匹配项。以下测试输入不是这种情况:
paginationInput=5
paginationInput.entries=5
我的要求是掌握
=
右侧的String并将其替换为某些东西。除了上面提到的输入之外,上面的模式还不错。我想了解错误的原因以及如何根据自己的需求优化正则表达式,以避免出现其他特殊情况。
最佳答案
您可以使用后面的内容来确保您的字符串以=
之后的字符开头:
(?<=\\=)([\\s\\w\\-.]*)$
至于为什么崩溃,这是该组中的第二个
*
。我不确定您为什么需要它,因为这听起来像您要的是:单个字符,等于
然后对以下组进行0次或更多次重复:
任意数量的空白
然后,任意数量的文字字符,破折号或点
字符串结尾
无论如何,取出那个
*
,它就不会永远旋转了,但是我仍然会使用后面的外观来寻找更具体的正则表达式。另外,我不知道您如何使用此功能,但是为什么要在其中使用
$
?然后,您只能匹配字符串中的最后一个(如果您有多个)。似乎最好还是先换行或结束:(?=\\n|$)
[编辑]:下面的每个评论更新。