gpt4 book ai didi

regex - 相同的正则表达式不匹配两次

转载 作者:行者123 更新时间:2023-12-04 16:42:35 24 4
gpt4 key购买 nike

试图解决我的 perl 脚本中的问题,我终于可以将其分解为这种情况:

my $content = 'test';
if($content =~ m/test/g) {
print "1\n";
}
if($content =~ m/test/g) {
print "2\n";
}
if($content =~ m/test/g) {
print "3\n";
}

输出:
1
3

我的真实情况有点不同,但最后是一样的:我很困惑为什么 regex 2 不匹配。有没有人对此有解释?我意识到/g 似乎是原因,当然这在我的例子中是不需要的。但是(为什么)这个输出是正常的行为吗?

最佳答案

这正是/g在标量上下文中应该做的。

它第一次匹配“测试”。第二个匹配尝试在前一个匹配停止后的字符串中开始匹配,但失败了。第三个匹配然后从字符串的开头再次尝试(并成功),因为第二个匹配失败并且您还没有指定 /c .

(如果匹配失败, /c 阻止它从头开始;如果您的第二个匹配是 /test/gc ,则第二个和第三个匹配都会失败。)

关于regex - 相同的正则表达式不匹配两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40900584/

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