正则表达式 – 如何用不支持它们的语言模拟非贪婪量词?
发布时间:2020-12-14 05:58:52 所属栏目:百科 来源:网络整理
导读:考虑这个正则表达式:(.*) 应用此字符串: 2356 my pal ned !@%@ 显然,由于贪婪*,它将匹配整个字符串.最好的解决方案是使用非贪婪的量词,如* ?.但是,许多语言和编辑都不支持这些. 对于像上面这样的简单案例,我已经用这样的正则表达式解决了这个限制:([^] *)
考虑这个正则表达式:<(.*)>
应用此字符串:
显然,由于贪婪*,它将匹配整个字符串.最好的解决方案是使用非贪婪的量词,如* ?.但是,许多语言和编辑都不支持这些. 对于像上面这样的简单案例,我已经用这样的正则表达式解决了这个限制:<([^>] *)> 但是像这样的正则表达式可以做些什么呢?开始(.*)结束 应用此字符串:
有什么办法吗? 解决方法
如果结束条件是单个字符的存在,则可以使用否定字符类:
<([^>]*)> 对于结束条件为多个字符的更复杂情况,您可以尝试使用否定前瞻,但如果不支持延迟匹配,则前瞻的可能性不是: ((?!end).)* 你最后的办法是建造一些像这样可怕的东西: (en[^d]|e[^n]|[^e])* (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |