gpt4 book ai didi

regex - 正则表达式中 "lookbehind assertion MUST be fixed length"的技术原因是什么?

转载 作者:行者123 更新时间:2023-12-03 06:47:32 25 4
gpt4 key购买 nike

例如,下面的正则表达式将导致失败报告lookbehind断言不是固定长度:

#(?<!(?:(?:src)|(?:href))=["\']?)((?:https?|ftp)://[^\s\'"<>()]+)#S

前瞻不存在此类限制。

最佳答案

Lookahead 和 Lookbehind 并不像它们的名字所暗示的那么相似。前瞻表达式的工作方式与独立正则表达式完全相同,只是它锚定在当前匹配位置并且不消耗其匹配的内容。

Lookbehind 是一个完全不同的故事。从当前匹配位置开始,它一次一个字符地向后遍历文本,尝试匹配每个位置的表达式。如果无法匹配,则回溯必须一直走到文本的开头(记住,一次一个字符),然后才会放弃。将其与前瞻表达式进行比较,后者仅应用一次。

当然,这过于简单化了,并不是所有的口味都这样,但你明白了。后视的应用方式与先行的应用方式根本不同(而且效率低得多)。只有限制后视必须向后看多远才有意义。

关于regex - 正则表达式中 "lookbehind assertion MUST be fixed length"的技术原因是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3796436/

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