【发布时间】:2015-09-03 05:34:17
【问题描述】:
<table((?!</table>).)*</table>
匹配我所有的表格标签。然而,
<table(.(?!</table>))*</table>
没有。如果我尝试用文字写出表达式,第二个似乎有意义,但我无法理解第一个。
有什么区别?
作为参考,我从这里得到了“Tempered Greedy Token”这个词:Tempered Greedy Token Solution
【问题讨论】:
-
顺便提一下,这种“缓和”的方式效率特别低。
-
然后.. 他 弥补了。事实上,这不是正则表达式领域的标准术语。如果我要进行民意调查,我敢打赌 99% 的正则表达式大师会嘲笑它。
-
嗯,那个网站的作者对我来说似乎是个大师。另外,我认为为模式命名是有帮助的——正则表达式或其他。我只想让大师们笑一笑。顺便说一句,这种模式有更标准的名称吗?
-
是的。我将其称为 Record Seperator Construct,因为那是它的唯一用途。这是最后的手段,最低效的方式来匹配任何东西。在正则表达式开头使用断言也是如此(绝对不能这样做!!)。
-
对不起,我会问你同样的问题:你让
Record Seperator Construct起来了吗?我怀疑这比Tempered Greedy Token更标准。事实上,谷歌给我这个短语的点击率为零。