Длина шаблона регулярного выражения Perl - PullRequest
1 голос
/ 16 ноября 2011

Я хочу найти один конкретный шаблон в одной строке, но определенной длины (максимальная длина 20).Пример:

строка:

hellokkkkkkkkkkhellokhellokkhellokkkkk

регулярное выражение:

/(hello.*?hello.*?hello)/

, но это дает мне следующий шаблон

loc: от 0 до 26

hellokkkkkkkkkkhellokhello

Но то, что я хочу, это только второй шаблон (означает hellokhellokkhello), длина которого <20 .. Есть предложения? </p>

1 Ответ

4 голосов
/ 16 ноября 2011

Чтобы получить перекрывающиеся совпадения, используйте упреждающий просмотр .

my $string = 'hellokkkkkkkkkkhellokhellokkhellokkkkk';
say for
    grep { length($_) < 20 }
    $string =~ /(?=(hello.*?hello.*?hello))/g;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...