gpt4 book ai didi

perl - 如何测试是否在 Perl 正则表达式匹配中定义了捕获?

转载 作者:行者123 更新时间:2023-12-05 09:24:48 25 4
gpt4 key购买 nike

如何在 Perl 正则表达式匹配中测试捕获是否定义?

#!/usr/bin/env perl
use v5.10;
my $str="foobar
barfoo";

while($str =~ m/(?:(f.*))|(?:(b.*))/g) {
say "+ $1";
say "- $2";
}

输出

+ foobar
-
+
- barfoo

而我想要的是

+ foobar
- barfoo

即如果 $1$2 不匹配,则不应打印。

最佳答案

问题是你没有测试它是否已定义,所以它会以任何一种方式打印 +/-。

while($str =~ m/(?:(f.*))|(?:(b.*))/g) {
say "+ $1" if defined($1);
say "- $2" if defined($2);
}

关于perl - 如何测试是否在 Perl 正则表达式匹配中定义了捕获?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8918939/

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