perl - 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
秒需要处理。
有没有一种高效而优雅的方式来做到这一点?
解决方案
看看这个逻辑是否对你有帮助:
#!/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
推荐阅读
- selenium - 当向后兼容性被删除时,如何使用 ChromeDriver 73 和 Chrome 版本 74 执行现有的 selenium 脚本?
- javascript - 无法从 Javascript 重新加载 Android WebView
- system - 如何建模 IEEE 6 总线系统单元承诺?
- r - 停止切换/隐藏的对象移动
- python - 在 StructType 数组上应用 UDF
- amazon-s3 - 如何在存储桶上配置 S3 事件以使用 ansible 触发 lambda
- mysql - 如何从数据库中获取最后插入的 id 并将其发送到组件?
- sdn - OpenDaylight 不再有 GUI 了吗?
- database - 确保来自 AWS 数据库服务的最新值
- javascript - Vue 组件中的 Vue 组件,范围似乎有冲突