Regex 如何在不使用';你不支持他们吗?
考虑这个正则表达式:Regex 如何在不使用';你不支持他们吗?,regex,Regex,考虑这个正则表达式: 应用于此字符串: 显然,由于贪婪的*,它将匹配整个字符串。最好的解决方案是使用非贪婪量词,如*?。但是,许多语言和编辑器不支持这些 对于像上面这样的简单情况,我已经用这样的正则表达式绕过了这个限制:]*)> 但是像这样的正则表达式能做什么呢开始(.*)结束 应用于此字符串: start 2356 end start my pal ned end start!@%@结束 是否有任何追索权?如果结束条件是存在单个字符,则可以使用负字符类: <([^>]*)>
应用于此字符串:
显然,由于贪婪的*
,它将匹配整个字符串。最好的解决方案是使用非贪婪量词,如*?
。但是,许多语言和编辑器不支持这些
对于像上面这样的简单情况,我已经用这样的正则表达式绕过了这个限制:]*)>
但是像这样的正则表达式能做什么呢<代码>开始(.*)结束
应用于此字符串:
start 2356 end start my pal ned end start!@%@结束
是否有任何追索权?如果结束条件是存在单个字符,则可以使用负字符类:
<([^>]*)>
你最后的办法是建造这样可怕的东西:
(en[^d]|e[^n]|[^e])*
我将
替换为[^>]
,其中
在本例中是RE中的下一个字符。出于好奇,哪些语言不支持“*?”?语言支持通常很好。实际上,更多的是编辑们倒下了。我脑子里想不出任何语言,但我知道我遇到过它们。顺便说一句,[^>]*>
样式可能比贪婪或非贪婪匹配更有效,因为它不会导致回溯。如果可以的话,你应该用这个图案。我没想到要长头发。你说得对,它们也可能不受支持,但正则表达式的实现总是令人惊讶。这是一个答案。哈哈!那太可怕了。但这是一般的,有时你必须做你必须做的。非常聪明。最后一行字符串很漂亮,但不幸的是并不总是有效。尝试从开始到结束
。因为没有编辑,所以从一开始这就是问题的一部分。我需要提高我的阅读理解能力。
(en[^d]|e[^n]|[^e])*