fir*_*roz 0 perl pattern-matching
谁能告诉我如何一次搜索整个阵列中的模式,例如
@array = ('I am AA','I am BB', 'I am CC', 'I am AAC')
$pattern = "AA"
Run Code Online (Sandbox Code Playgroud)
我使用以下逻辑但它不起作用
if (@array =~ /$pattern/) {
# do this;
} else {
# do that
}
Run Code Online (Sandbox Code Playgroud)
谢谢
你可能正在寻找一个 grep
my @array = ('I am AA','I am BB', 'I am CC', 'I am AAC');
my $pattern = "AA";
if (my @matches = grep {$_ =~ /$pattern/} @array) {
print "These entries matched:\n";
print "'$_'\n" for @matches;
# do this;
} else {
# do that
}
Run Code Online (Sandbox Code Playgroud)
但是,如果您的模式与您实际匹配的模式类似,那么您的模式也可能不一定按预期方式工作.我建议你为你的模式添加一个单词边界quotemeta.
if (my @matches = grep {$_ =~ /\b\Q$pattern\E\b/} @array) {
Run Code Online (Sandbox Code Playgroud)