搜索字符串或整个文件以查找数组元素的Perl习惯用法是什么? E.g:
my @array = qw(word, test, ...);
my $string = ".......";
我想在word
内搜索test
或words
(也可以是tester
,$string
等)并返回找到的内容(即小组赛。)
我搜索了文档,似乎map + grep
就像我需要的那样,但我无法想出它的代码。 Perl非常有趣,有时候我完全无能为力。 :)
使用map
中的一个示例:
my @squares = map { $_ * $_ } grep { $_ > 5 } @numbers;
我想我可以将字符串拆分为数组grep
。我是对的吗?
grep { @array } @string; # something like grep {/(word|test)/} @string but I want to use array
答案 0 :(得分:6)
my @word_roots = qw( word test );
my $pat = join '|', map quotemeta, @word_roots;
my $re = qr/\b(?:$pat)\w+\b/;
my @matches = $string =~ /($re)/g;
答案 1 :(得分:3)
re.pl 会话中的内容如何:
$ my @array = qw(word test)
$VAR1 = 'word';
$VAR2 = 'test';
$ my $string = ' the word is test, I said'
the word is test, I said
$ my @match_array = map { $string =~ /\b($_)\b/ } @array
$VAR1 = 'word';
$VAR2 = 'test';
\b$_\b
周围的括号捕获map
内的正则表达式中的匹配。
\b
确保我们只匹配单词是自己找到的(如“test”或“word”),而不是包含字符“test”或其中的“word”的单词“胆小鬼”或“最聪明”。有关\b
。