Perl - вполне язык программирования с поддержкой повторений, созданный для преодоления повторяющейся ручной работы.Таким образом, вы можете написать строки, которые повторяют шаблон как $pattern x $repetitions
или буквально набирают 'ATC'x11
.
Помимо сопоставления через /(?:ATC){11}/
(, как уже предлагалось ), это был бы другой способпросто получите Off :
print "Off\n" if $content =~ ("ATC" x 11);
Как сопоставить все тандемные повторы триггеров ATC
и на тех, у кого более 10 повторений, [1] вам необходимо выполнить цикл по буквам:
while ($content =~ /(ATC(?:ATC)+)/g) {
my $count = (length $1) / 3;
print "$count repeat length\n";
print "Off\n" if $count > 10;
}
В противном случае для таких входов, как $prefix.ATCx2.$infix.ATCx11.$postfix
, обнаружение остановится при первом повторении тандема.Предварительно определенная ссылка на захваченное совпадение $1
используется для проверки длины совпадения.
[1] после подсчета появлений ATC
вВсего, игнорируя, если они являются последовательными:
my $count = () = $content =~ /ATC/g;
print "count (total matches) $count\n";