gpt4 book ai didi

regex - Raku:在正则表达式中使用主题变量(来自 'for' )

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

我有这个按预期工作的代码:

my @words = 'foo', 'bar';
my $text = 'barfoo';

for @words -> $to-regex {
$text ~~ m/ ($to-regex) {say "matched $0"}/;
}
它打印:
matched foo
matched bar
但是,如果我尝试在 for 循环中使用主题变量,如下所示:
for @words { # implicit "-> $_", AFAIK
$text ~~ m/ ($_) {say "matched $0"}/;
}
我明白了:
matched barfoo
matched barfoo
使用后缀的相同结果:
$text ~~ m/ ($_) {say "matched $0"}/ for @words; # implicit "-> $_", AFAIK
这是正则表达式中主题变量的特例吗?
它是否应该保存与之匹配的整个字符串?

最佳答案

智能匹配算子有 3 个阶段

  • 将左参数暂时别名为 $_
  • 运行右边的表达式
  • 调用 .ACCEPTS($_)关于该结果

  • 所以这不是正则表达式的特例,它是如何 ~~总是有效。
    for 1,2,3 {
    $_.print;
    'abc' ~~ $_.say
    }
    # 1abc
    # 2abc
    # 3abc

    关于regex - Raku:在正则表达式中使用主题变量(来自 'for' ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64398187/

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