代码之家  ›  专栏  ›  技术社区  ›  LearnToBeBetter

读取文件,搜索字符串,打印字符串

  •  0
  • LearnToBeBetter  · 技术社区  · 3 年前

    我试图读取一个文件,使用正则表达式搜索字符串,并打印与该正则表达式匹配的字符串。我不想要正则表达式匹配找到的整行,只想要字符串匹配。

    use warnings;
    use strict;
    
    my $src = 'D:\Scripts\file.c';
    
    # open source file for reading
    open(SRC,'<',$src) or die $!;
    
    while(my $row = <SRC>){
        if ($row =~ /[0-9]{2}\.[0-9]{2}\.[0-9]{3}\.[a-z,0-9]{2}|[0-9]{2}\.[0-9]{2}\.[0-9]{3}\.[a-z,0-9]{3}/){
            print "$1 \n";
        }
    }
    
    close(SRC);
    

    我上面的例子不起作用。我越来越 在串联中使用未初始化的值$1(.)或者在脚本中使用字符串。pl第12行,第8行。我用Perl 5.32.1在Windows 10命令行上运行它。

    1 回复  |  直到 3 年前
        1
  •  1
  •   ikegami Gilles Quénot    3 年前

    $1 文本是否被第一次捕获( (...) )按照你的模式。你的模式没有捕获,所以 $1 在比赛中变为未定义。

    如果要打印匹配的文本,请使用 $& .