考虑以下正则表达式:
对于像上面那样简单的情况,我已经通过以下正则表达式解决了这个限制:
<(.*)>
应用于以下字符串:
显然,由于贪婪的
<2356> <my pal ned> <!@%@>
*
,它将匹配整个字符串。最好的解决方案是使用非贪婪量词,例如*?
。但是,许多语言和编辑器不支持这些。对于像上面那样简单的情况,我已经通过以下正则表达式解决了这个限制:
<([^>]*)>
但是,对于像这样的正则表达式start (.*) end
,应用于以下字符串:
是否有任何可行的解决办法呢?
start 2356 end start my pal ned end start !@%@ end
[^>]*>
样式可能比贪婪或非贪婪匹配更有效,因为它不会导致回溯。当您可以使用此模式时,应使用它。 - bobince