grep Perl数组中的特定字符串

grep Perl数组中的特定字符串,perl,grep,Perl,Grep,在Perl程序中,如何在数组中以任意顺序仅grep多组五个字符 @arr2 = grep(/[BCRZ]+/, @arr1); @arr1可以包含 CRZBBZTCCBBRZ FJDLSFJSLFJS CRZBBZCCBBRZ 只有像最后一行这样的行才可以使用我想这可能会满足你的要求。如果字符串包含除CBRZW以外的任何字符,它将拒绝该字符串 use strict; use warnings; my @arr1 = qw/ CRZBBZTCCBBRZ FJDLSFJSLFJS CRZBBZ

在Perl程序中,如何在数组中以任意顺序仅grep多组五个字符

@arr2 = grep(/[BCRZ]+/, @arr1);
@arr1
可以包含

CRZBBZTCCBBRZ
FJDLSFJSLFJS
CRZBBZCCBBRZ

只有像最后一行这样的行才可以使用

我想这可能会满足你的要求。如果字符串包含除
CBRZW
以外的任何字符,它将拒绝该字符串

use strict;
use warnings;

my @arr1 = qw/ CRZBBZTCCBBRZ FJDLSFJSLFJS CRZBBZCCBBRZ /;

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

print "$_\n" for @arr2;
输出

CRZBBZCCBBRZ

我想这可能是你想要的。如果字符串包含除
CBRZW
以外的任何字符,它将拒绝该字符串

use strict;
use warnings;

my @arr1 = qw/ CRZBBZTCCBBRZ FJDLSFJSLFJS CRZBBZCCBBRZ /;

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

print "$_\n" for @arr2;
输出

CRZBBZCCBBRZ

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

 /^[BRCZW]+$/

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

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

 /^[BRCZW]+$/

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

我不明白为什么要排除第一行。那你的五个角色呢?你的意思是字符串必须至少包含五个
BCRZ
?我漏掉了第五个字母。让我们看一些不同于T的东西,比如W。在这种情况下,第一个和第二个应该被丢弃。任何一组5,CBRZW在任何长度的任何顺序都被接受。我不明白为什么第一行应该被排除。那你的五个角色呢?你的意思是字符串必须至少包含五个
BCRZ
?我漏掉了第五个字母。让我们看一些不同于T的东西,比如W。在这种情况下,第一个和第二个应该被丢弃。5的任何一组,CBRZW在任何长度的任何顺序都被接受,但似乎有了“不”,它可以容纳除BCRZ之外的任何东西,不是吗?这与我所说的正好相反want@carol这是双重否定-字符类中有
not
^
。另一种方法是使用
grep{/^[BCRZ]+$/}@arr1-该类中字符串开头和结尾之间的一个或多个字符。@carol:Tom是正确的。正如我所写的,如果字符串包含除
CBRZW
以外的任何字符,则代码将拒绝该字符串。此外,代码生成您请求的输出。但是,似乎使用“not”时,它包含除BCRZ之外的任何内容,不是吗?这与我所说的正好相反want@carol这是双重否定-字符类中有
not
^
。另一种方法是使用
grep{/^[BCRZ]+$/}@arr1-该类中字符串开头和结尾之间的一个或多个字符。@carol:Tom是正确的。正如我所写的,如果字符串包含除
CBRZW
以外的任何字符,则代码将拒绝该字符串。此外,代码生成您请求的输出。正如我在@Borodin下面的回答中所建议的,这可以在
grep
中以完全相同的方式使用。你是怎么建议用它来代替的?当我输入我的答案时,我不认为你的答案在我的提要中。但是,是的,我和你的建议是一样的。正如我在@Borodin的回答下面的评论中所建议的,这可以在
grep
中以完全相同的方式使用。你是怎么建议用它来代替的?当我输入我的答案时,我不认为你的答案在我的提要中。但是是的,我和你的建议是一样的。