gpt4 book ai didi

regex - 可变长度 Lookbehind 在 perl 文件中不起作用,但在单行中起作用

转载 作者:行者123 更新时间:2023-12-04 15:14:12 31 4
gpt4 key购买 nike

如果我输入 s/(?<!(?:href|src)=.{0,40})jpg//g在 perl 文件中,并尝试运行它,它会发出警告:Variable length lookbehind is experimental in regex; marked by并失败。

但如果放入perl 一行,它会成功运行,尽管仍然会被警告Variable length lookbehind is experimental in regex; marked by。 .

是目前的设计还是我用错了?

更新:我正在使用 perl 5.31.3

最佳答案

在 v5.30 之前,具有不确定的“可变宽度”模式的正后视无法使用 Variable length lookbehind not implemented 进行编译 错误。

在 v5.30 中,您 are allowed使用最多可匹配 255 个字符的后视模式。

Using a lookbehind assertion (like (?<=foo?) or (?<!ba{1,9}r)previously would generate an error and refuse to compile. Now itcompiles (if the maximum lookbehind is at most 255 characters), butraises a warning in the new experimental::vlb warnings category. Thisis to caution you that the precise behavior is subject to change basedon feedback from use in the field.

如果您使用 (?<=WORD\s+) , 你会得到一个 Lookbehind longer than 255 not implemented 错误,因为正则表达式引擎需要提前知道子模式的长度不会超过 255 和 +量词的长度不确定。所以,(?<=WORD\s{0,255})会工作。

在您的情况下,您知道您的后视模式永远不会匹配超过 255 个字符,因此只需像任何其他实验性警告一样转动该实验性警告:

no warnings qw(experimental::vlb);

注意:确保上面的行放在use warnings; 之后行,如果存在,否则将没有持久效果,被 use warnings; 覆盖.

关于regex - 可变长度 Lookbehind 在 perl 文件中不起作用,但在单行中起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64619186/

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