Perl中匹配的字符数

时间:2010-07-31 15:46:34

标签: perl search

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

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

我希望得到CHI出现的字符编号,例如:

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

任何想法或提示?。

3 个答案:

答案 0 :(得分:3)

请参阅perldoc -f index

答案 1 :(得分:3)

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;

答案 2 :(得分:1)

此处发布的索引解决方案很好, 但出于学习目的,你也可以 使用正则表达式,例如:

...

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

...

会打印您想要的输出。这甚至会成为一个奇特的单行:

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

此致

RBO