为了账号安全,请及时绑定邮箱和手机立即绑定

Tempered Greedy Token - 在负前瞻之前放置点有什么不同

Tempered Greedy Token - 在负前瞻之前放置点有什么不同

牧羊人nacy 2019-05-27 16:31:02
Tempered Greedy Token - 在负前瞻之前放置点有什么不同<table((?!</table>).)*</table>但是,匹配我的所有表格标签<table(.(?!</table>))*</table>才不是。第二个似乎是有意义的,如果我试图用文字写出表达,但我无法理解第一个。有人可以向我解释一下这个区别吗?作为参考,我从这里得到了“Tempered Greedy Token”这个术语:http://www.rexegg.com/regex-quantifiers.html#tempered_greed
查看完整描述

3 回答

?
HUX布斯

TA贡献1876条经验 获得超6个赞

((?!</table>).)*检查要匹配的特定字符不能是字符串中的起始字符</table>。如果是,则只匹配该特定字符。*重复相同的零次或多次。

(.(?!</table>))*只有在没有跟随</table>,零次或多次的情况下才匹配任何字符。因此,这将匹配表标记内的所有字符,从而删除最后一个字符,因为最后一个字符后跟</table>。并且以下模式</table>断言在匹配结束时必须有一个关闭表标记。这使得匹配失败。

看到这里


查看完整回答
反对 回复 2019-05-27
?
红颜莎娜

TA贡献1842条经验 获得超12个赞

一个脾气暴躁的贪婪令牌真正意味着:

“匹配,但只有一点”

你是怎么做到的:

你把你不想匹配的令牌作为一个(?!notAllowedToMatch)点前面的负向前瞻 .(匹配任何一件事),然后用一个星重复整个事情*

((?!notAllowedToMatch).)*

这个怎么运作:

“看,并吃一个”一遍又一遍,通过输入字符串从左到右移动一个字符,直到看到不允许的序列(或字符串的结尾),此时匹配停止。

Wiktor更详细的答案很好,我只是觉得一个更简单的解释是有序的。


查看完整回答
反对 回复 2019-05-27
  • 3 回答
  • 0 关注
  • 710 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信