我要搜索一个文件的字符串,然后得到补偿的所有比赛。 文件的内容如下:
sometext
sometext
AAA
sometext
AAA
AAA
sometext
我读这整个文件转换成字符串$text
,然后做了一个正则表达式匹配AAA
如下:
if($text =~ m/AAA/g) {
$offset = $-[0];
}
这将给抵消只有一个的AAA
。 我怎样才能抵消所有的比赛呢?
我知道,我们可以得到使用的语法像这样的阵列中的所有比赛:
my @matches = ($text =~ m/AAA/g);
但我想弥补不匹配的字符串。
目前我使用下面的代码来获得所有比赛的偏移:
my $text= "sometextAAAsometextAAA";
my $regex = 'AAA';
my @matches = ();
while ($text =~ /($regex)/gi){
my $match = $1;
my $length = length($&);
my $pos = length($`);
my $start = $pos + 1;
my $end = $pos + $length;
my $hitpos = "$start-$end";
push @matches, "$match found at $hitpos ";
}
print "$_\n" foreach @matches;
但有对这一简单的方法?