gpt4 book ai didi

regex - 如何在不支持它们的语言中模拟非贪婪量词?

转载 作者:行者123 更新时间:2023-12-04 18:16:48 25 4
gpt4 key购买 nike

考虑这个正则表达式:<(.*)>
应用于此字符串:

<2356> <my pal ned> <!@%@>



显然,它会匹配整个字符串,因为 * 贪婪.最好的解决方案是使用非贪婪量词,例如 *? .但是,许多语言和编辑器不支持这些。

对于像上面这样的简单情况,我已经用这样的正则表达式解决了这个限制: <([^>]*)>
但是像这样的正则表达式可以做什么? start (.*) end
应用于此字符串:

start 2356 end start my pal ned end start !@%@ end



是否有任何追索权?

最佳答案

如果结束条件是存在单个字符,则可以改用负字符类:

<([^>]*)>

对于结束条件是多个字符的更复杂的情况,您可以尝试否定前瞻,但如果不支持延迟匹配,则前瞻可能不会是:
((?!end).)*

你最后的办法是构建这样的可怕的东西:
(en[^d]|e[^n]|[^e])*

关于regex - 如何在不支持它们的语言中模拟非贪婪量词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2074835/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com