perl中的grep为我提供了所有匹配的行与正则表达式.
对于前
{
my @FAMILY_MAP= ("A2LVLX","LVLX","O2LVLX");
my $search="LVLX";
my @match = grep (/ALVL/, @FAMILY_MAP);
print @match;
}
Run Code Online (Sandbox Code Playgroud)
这里我的预期输出是LVLX,但我获得了数组中的所有三个元素.这也是Linux终端中的预期行为(如果grep LVLX是在包含这三个单词的文件上完成的).但我必须在终端中使用grep -w"LVLX"来获取LVLX作为输出.我需要一种方法来使用perl grep复制相同的方法.任何提示?
grep -w仅当字符串显示为整个单词时才匹配该字符串.为此,您需要\b在正则表达式中使用单词boundary()转义序列.
my @family_map = ("A2LVLX","LVLX","O2LVLX");
my $search = 'LVLX';
my @match = grep (/\b$search\b/, @family_map);
print "@match";
Run Code Online (Sandbox Code Playgroud)
更新:或者,如果您知道阵列的元素都是单个单词,那么只需使用eq.
my @match = grep( $_ eq $search, @family_map);
Run Code Online (Sandbox Code Playgroud)