gpt4 book ai didi

regex - 当锚定到字符串的开头时,为什么这种积极的后视断言不起作用?

转载 作者:行者123 更新时间:2023-12-01 07:01:16 25 4
gpt4 key购买 nike

当它锚定到字符串的前面时,为什么这种后视断言不起作用?运行以下代码,您将看到第一个测试通过,但第二个测试(仅因 ^ anchor 而异)失败。

use Test::More tests => 2;

my $s = '/123/456/hello';
$s =~ s{(?<=/)\d+(?=/\d+/hello)}{0}; # unanchored
is($s, '/0/456/hello', 'unanchored'); # passes

$s = '/123/456/hello';
$s =~ s{^(?<=/)\d+(?=/\d+/hello)}{0}; # anchored
is($s, '/0/456/hello', 'anchored'); # fails

^ 移动到后视断言对我来说不是一个选择(这是一个非常简化的示例),但这确实解决了问题。我找到了另一种方法来做我想做的事,但我很好奇为什么这种方法不起作用。我已经在 perl 5.8.8 和 perl 5.10.0 上对此进行了测试。

最佳答案

请记住,断言是零宽度的,并且不会消耗它匹配的字符。所以 anchor 必须进入断言内部,否则整个表达式不匹配。

关于regex - 当锚定到字符串的开头时,为什么这种积极的后视断言不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3354645/

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