【问题标题】:Matching a pattern : regex - perl匹配模式:正则表达式 - perl
【发布时间】:2013-12-09 04:06:22
【问题描述】:

如果我想在这个文件中找到单词 USER 和 PASS 的所有实例,然后将它们出现的次数分别放入两个变量中,我该怎么做?谢谢!

open MYFILE, '<', 'source_file.txt' or die $!;
open OUTFILE, '>', 'Header.txt' or die $!;

$user = 0;
$pass = 0;

while (<MYFILE>) { 
    chomp;

    my @header = split (' ',$_);
    print OUTFILE "$linenum: @header\n\n";

    if (/USER/ig) {
        $user++;
    }

    if (/PASS/ig) {
        $pass++;
    }
}

上面是新代码,它可以工作。 我将变量设置为 0,并在变量上使用了 ++ 增量器。 但是我仍然愿意接受有关扩展正则表达式功能的建议? (如果有道理的话)

【问题讨论】:

  • 您可以在每次看到其中一个字符串时增加一个计数器?
  • 哇,如此简单,却如此有效。非常感谢,成功了!

标签: regex perl split while-loop


【解决方案1】:

你可以这样做。

my $user = 0;
my $pass = 0;

while (<MYFILE>) { 
     chomp;
     my @header = split ' ', $_;
     print OUTFILE "$linenum: @header\n\n";

     $user++ if /user/ig;
     $pass++ if /pass/ig;
}

【讨论】:

    猜你喜欢
    • 2011-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多