Arrays 在数组中查找匹配的子字符串
我想在数组中找到一个子字符串。如何打印所有匹配的子字符串 我的代码如下:Arrays 在数组中查找匹配的子字符串,arrays,regex,perl,Arrays,Regex,Perl,我想在数组中找到一个子字符串。如何打印所有匹配的子字符串 我的代码如下: @ar = <DATA>; @skm = grep{m/SLP/g} @ar; print "@skm\n"; __DATA__ VEFGSLPPKKKLVESLPMMK 在标量中,我可以使用$&,但我不知道如何在数组中实现它。我该怎么做?grep只检查列表中的元素是否匹配。您可能希望使用map将列表元素实际转换为您需要的内容,在本例中,使用regex从@ar数组中捕获并返回每个元素的转换列表 my @skm
@ar = <DATA>;
@skm = grep{m/SLP/g} @ar;
print "@skm\n";
__DATA__
VEFGSLPPKKKLVESLPMMK
在标量中,我可以使用
$&
,但我不知道如何在数组中实现它。我该怎么做?grep
只检查列表中的元素是否匹配。您可能希望使用map
将列表元素实际转换为您需要的内容,在本例中,使用regex从@ar
数组中捕获并返回每个元素的转换列表
my @skm = map {m/(SLP)/g} @ar;
grep
仅检查列表中的元素是否匹配。您可能希望使用map
将列表元素实际转换为您需要的内容,在本例中,使用regex从@ar
数组中捕获并返回每个元素的转换列表
my @skm = map {m/(SLP)/g} @ar;
grep
运算符只返回输入列表的子集,其中第一个参数中的表达式的计算结果为真值
由于@ar
数组只有一个元素,并且该元素包含SLP
,因此调用grep
会将其返回给您
听起来您需要的是map
,它在列表上下文中执行时返回第一个参数中表达式的结果。表达式/SLP/g
返回字符串中出现的所有SLP
,因此
map /SLP/g, <DATA>
输出
XXX
XXX
XXX
XXX
grep
运算符只返回输入列表的子集,其中第一个参数中的表达式的计算结果为真值
由于@ar
数组只有一个元素,并且该元素包含SLP
,因此调用grep
会将其返回给您
听起来您需要的是map
,它在列表上下文中执行时返回第一个参数中表达式的结果。表达式/SLP/g
返回字符串中出现的所有SLP
,因此
map /SLP/g, <DATA>
输出
XXX
XXX
XXX
XXX
谢谢@mpapec。特殊变量不在数组中?与
$&
@Hussain no一样,grep仅在条件计算为true
@Hussain时返回列表元素,grep
与正则表达式匹配无关(例如my@bad=grep{$\u>$max}@nums;
),因此$&
与grep
无关。谢谢@mpapec>。特殊变量不在数组中?与$&
@Hussain no一样,grep仅在条件计算结果为true
@Hussain时返回列表元素,grep
与正则表达式匹配无关(例如my@bad=grep{$\u>$max}@nums;
),因此$&
与grep
无关。