grep Perl数组中的特定字符串

时间:2014-05-16 14:22:29

标签: perl grep

如何在Perl程序中的数组中只按任意顺序grep多个五个字符集?

@arr2 = grep(/[BCRZ]+/, @arr1);

@arr1可以包含

CRZBBZTCCBBRZ
FJDLSFJSLFJS
CRZBBZCCBBRZ

只应采取像上一行的行

2 个答案:

答案 0 :(得分:3)

我认为这可能会做你想要的。如果字符串包含CBRZW以外的任何字符,则拒绝该字符串。

use strict;
use warnings;

my @arr1 = qw/ CRZBBZTCCBBRZ FJDLSFJSLFJS CRZBBZCCBBRZ /;

my @arr2 = grep { not /[^CBRZW]/ } @arr1;

print "$_\n" for @arr2;

<强>输出

CRZBBZCCBBRZ

答案 1 :(得分:3)

如果您想要的是仅包含5个字符而不包含其他字符的行,则使用正则表达式:

 /^[BRCZW]+$/

查找包含一个或多个5个字符集的字符串,但不包含其他字符。但是使用grep()对@ carol的解决方案可能更有效。它使用正则表达式来确定字符串是否包含任何不需要的字符,然后拒绝该行。