|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Oleg N. Kotenko 2:5020/194.97 19 Nov 2002 18:20:50 To : Artem Chuprina Subject : Проблемы с логикой регулярных выражений --------------------------------------------------------------------------------
Вторник Hоябрь 19 2002 15:33, Artem Chuprina пишет Andrew Sagulin:
AS>> $txt =~ /(?:(abra\d).+?)+myexp/;
AS>> 2All: Объясните, почему он работает? :) Я думал, он должен выдать
AS>> массив из всех abra\d, стоящих перед myexp, а он выдаёт только
AS>> самый последний.
AC> Потому что без /g, кажется. Точно не уверен. Лучше MRE перечитать.
В данном случае myexp в строке встречается только один раз, поэтому всё равно,
есть там /g или нет. Вот если бы встречалось несколько раз и перед каждым было
бы abra, то при наличии /g возвращался бы массив abra, которые стоят перед
каждым myexp.
@res = $txt =~ m/(?:(abra\d).+?)+myexp/g;
@res = join("\n", @res);
print @res;
Без /g, естественно, возвращается первое совпадение.
Hogaktningsfullt, Ardaris
... "real eyes realize real lies" (c)
--- [ http://oppro.mir.glasnet.ru ] UNREG
* Origin: Eritis sicut Deus scientes bonum et malum (2:5020/194.97)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор Архивное /ru.perl/175853dda7302.html, оценка из 5, голосов 10
|