Использование подстроки дважды в регулярном выражении - PullRequest
4 голосов
/ 23 января 2010

Во-первых, этот вопрос, возможно, задавался раньше, но я не уверен, по какой фразе искать.

У меня есть строка:

Maaaa

У меня есть шаблон:

ааа

Я хотел бы совпадать дважды, давая мне стартовые индексы 1 и 2. Но, конечно, я получаю только одно совпадение (стартовый индекс 1), потому что механизм регулярных выражений поглощает все 3 "а" и не может используйте их снова, оставив мне 1 "а", который не совпадает.

Как мне решить эту проблему?

Спасибо!

Ответы [ 2 ]

9 голосов
/ 23 января 2010

Вы могли бы использовать утверждение предпросмотра, чтобы найти a, а затем 2 a

a(?=aa)
0 голосов
/ 23 января 2010

Страница man perlre предлагает:

 my @a;
 "Maaaa" =~ /aaa(?{push @a,$&})(*FAIL)/;
 print join "\n",@a;
 print "\n";

, что дает

aaa
aaa
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...