我想要在文件中搜索字符串并获取所有匹配项的偏移量。
文件内容如下:
但是有没有更简单的方法实现这个功能呢?
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;
但是有没有更简单的方法实现这个功能呢?