首页 > 解决方案 > Perl:匹配一个大数组

问题描述

说我有$sentence = "The quick brown fox jumps over the lazy dog"一个数组@targets = qw(brown red black lazy quick);

目标是找出@targets包含在 中的所有单词$sentence,在这种情况下,就是这三个单词:brown lazy quick

注意:该@targets数组可能非常大,例如其中可能有 10,000 个元素。并且可能有 10,000$sentence秒需要处理。

有没有一种高效而优雅的方式来做到这一点?

标签: perlpattern-matching

解决方案


看看这个逻辑是否对你有帮助:

#!/usr/bin/perl

use strict;
use warnings;

my $sentence = "The quick brown fox jumps over the lazy dog";

my @targets = qw/brown red black lazy quick/;
my %targets = map { $_ => 1 } @targets;

my @words = split(' ', $sentence);

foreach my $each_word ( @words ){
    print $each_word."\n" if $targets{$each_word};
}

输出

quick
brown
lazy

推荐阅读