regex - 使用数组中的元素快速搜索文件的 Perl 习惯用法

标签 regex arrays perl grep

在字符串或整个文件中搜索数组元素出现的 Perl 习语是什么?例如:

my @array = qw(word, test, ...);
my $string = ".......";

我要搜索wordtest(也可以是wordstester等)在 $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

最佳答案

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;

关于regex - 使用数组中的元素快速搜索文件的 Perl 习惯用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20794043/

相关文章:

regex - sed 命令适用于命令行,但不适用于 bash 脚本

php - 如何在php中从多维数组在自定义数组中创建组合

arrays - 是否有将 "zip"两个单元格数组放在一起的函数?

python - 按属性将项目排序到数组中

perl - Marpa 解析器库是否支持错误恢复?

regex - NotePad++ 正则表达式删除包含嵌入标签的 HTML 标签

java正则表达式搜索段落中的 block /字符串/单词

c# - 仅具有限制的正则表达式字符串

perl - Perl6 是否支持与 Perl5 的 __DATA__ 和 __END__ 部分等效的内容?

regex - Perl One Liner 解析正则表达式中的多个条件