Perl:使用正则表达式查找文件中的模式

时间:2015-10-25 06:14:49

标签: regex perl

print "enter file name\n";
open (INFO, <>);
while ($line = <INFO>){
  if ($line =~ m/(\d+)/) {
  print "$1 \n";
  }
}

我想在我的文件中找到任何数字并在不同的行上打印它们。但是,如果我的文件包含以下内容:

Hi there 45661 apples bananas 3 yes no maybe 11111

然后我的程序只打印45661而没有别的。我怎样才能打印出来

456661
3
1111

1 个答案:

答案 0 :(得分:1)

您需要使用/g修饰符将正则表达式置于while循环中:

print "enter file name\n";
chomp( my $filename = <STDIN> );

open my $fh, '<', $filename or die "Can't open $filename: $!";

while ( my $line = <$fh> ) {
    while ( $line =~ /(\d+)/g ) {
        print "$1\n";
    }
}