У меня есть строка, содержащая несколько подстрок, каждая из которых содержит один или несколько символов 'E'. Я пытаюсь получить координаты каждой из этих строк, используя Perl и регулярные выражения. Вот что я попробовал сначала.
#!/usr/bin/perl
use strict;
my $str = "GGGFFEEIIEIIIIEEEIIIETTGGG";
foreach my $match($str =~ m/(E+)/)
{
print "match: $match, coords: (". $-[0] .", ". $+[0] .")\n";
}
Вывод на терминал выглядит следующим образом ...
> ./test
match: EE, coords: (5, 7)
, поэтому он успешно находит первую подстроку. Но я хотел бы определить каждую подстроку. Поэтому я добавил модификатор 'g' в регулярное выражение, например ...
#!/usr/bin/perl
use strict;
my $str = "GGGFFEEIIEIIIIEEEIIIETTGGG";
foreach my $match($str =~ m/(E+)/g)
{
print "match: $match, coords: (". $-[0] .", ". $+[0] .")\n";
}
, который дает следующий вывод терминала.
> ./test
match: EE, coords: (20, 21)
match: E, coords: (20, 21)
match: EEE, coords: (20, 21)
match: E, coords: (20, 21)
Как видите, он правильно находит каждую подстроку, но я только вытаскиваю координаты последнего совпадения. Может я неправильно использую $ - и $ +? Любые идеи, как я могу получить эти координаты правильно? Спасибо.