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

Perl中匹配的字符数

  •  1
  • Eduardo  · 技术社区  · 14 年前

    如何让Perl告诉我匹配的字符数,例如在我拥有的文本文件中:

    CHI (3) - NSH (1)        
    DAL (4) - CHI (3)        
    VAN (3) - CHI (2)    
    

    我想得到的是CHI出现的字符数,例如:

    Line 1: 0
    Line 2: 9
    Line 3: 9
    

    有什么想法或暗示吗?。

    3 回复  |  直到 14 年前
        1
  •  3
  •   ghostdog74    14 年前
        2
  •  3
  •   Axeman maxelost    14 年前
    use strict;
    use warnings;
    use English qw<$INPUT_LINE_NUMBER>;
    
    open my $fh, '<', '/path/to/file/I/want' or die "Could not open file!";
    while ( <$fh> ) {
        printf "Line %d: %d\n",  $INPUT_LINE_NUMBER, index( $_, 'CHI' );
    }
    close $fh;
    
        3
  •  1
  •   rubber boots    14 年前

    这里发布的索引解决方案很好, 但为了学习,你也可以 使用正则表达式,例如:

    ...
    
    while( <$fh> ){
        /CHI/g && print "Line $.: $-[0]\n" 
    }
    
    ...
    

    会打印出你想要的输出。这甚至会使一个花哨的一行:

    $> perl -lne '/CHI/g && print "Line $.: $-[0]"' data.txt
    

    当做