如果正则表达式匹配A而不是正则表达式匹配B,则打印Perl

时间:2013-10-29 19:17:05

标签: regex perl logic

我想打印一行文件,如果它包含字符串A并且它不包含字符串B(在每个冒号处也分成新行)。什么是正确的语法?这是我尝试过的(我想要打印包含“bash”的行,但不打印包含数字的行):

my $file = passwdtest;
open(FH, "$file"); 
foreach (<FH>) { 
print join("\n", split(/:/, "$_")) if ($_ =~ /bash/ and $_ != /\d+/);
};

close FH;

2 个答案:

答案 0 :(得分:4)

 $_ != /\d+/

的缩写
 $_ != ($_ =~ /\d+/)

而不是!=您需要!~

if ($_ =~ /bash/ and $_ !~ /\d+/);

答案 1 :(得分:0)

不只是:

if (/bash/ && ! /\d+/)