加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式中“lookbehind断言必须是固定长度”的技术原因是什么

发布时间:2020-12-14 06:40:07 所属栏目:百科 来源:网络整理
导读:例如,下面的正则表达式会导致失败报告lookbehind断言不是固定长度: #(?!(?:(?:src)|(?:href))=["']?)((??1?|ftp)?2//[^s'"()]+)#S 这种限制不存在于前瞻。 lookahead和lookbehind不像他们的名字暗示那么相似。如果它是一个独立的正则表达式,前瞻表达式
例如,下面的正则表达式会导致失败报告lookbehind断言不是固定长度:
#(?<!(?:(?:src)|(?:href))=["']?)((??1?|ftp)?2//[^s'"<>()]+)#S

这种限制不存在于前瞻。

lookahead和lookbehind不像他们的名字暗示那么相似。如果它是一个独立的正则表达式,前瞻表达式的工作方式完全相同,只是它锚定在当前匹配位置,并且不消耗匹配的结果。

Lookbehind是一个完全不同的故事。从当前匹配位置开始,每次向后翻一个字符一个字符,尝试在每个位置匹配其表达式。在没有匹配的情况下,后面必须一直到文本的开始(一次一个字符,记住),在它放弃之前。将其与前瞻表达式进行比较,该表达式仅应用一次。

这当然是一个粗略的过度简化,并不是所有的口味都这样工作,但你得到的想法。应用后瞻的方式与应用前瞻的方式(根本不同)(并且远远不如效率更高)。只有对后瞻才有多远的限制才有意义。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读