|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : vilfred 2:5020/400 24 Nov 2002 02:23:36 To : Andrew Sagulin Subject : Re: Проблемы с логикой регулярных выражений -------------------------------------------------------------------------------- привет! AS> $txt='fhjd abra1 jwfhui abra2 hiwf AS> myexp jioer abra3'; AS> Я не знаю почему (случайно получилось), но ниже AS> приведённый regexp работает AS> так, как тебе надо. AS> $txt =~ /(?:(abra\d).+?)+myexp/; ?: - группировка просто. ты написал дословно следующее выдрать ненулевое число abra\d на минимальном расстоянии от myexp, повторяющееся больше чем один раз. Знак вопроса при квантификаторе + делает его щедрым, еслиб знака вопроса небыло бы, то он был бы жадным, т.е. высветил бы самое первое(т.е. самое далеко от него расположенное) вхождение abra\d от myexp. я бы проще поступил: print $1 if $txt=~m&(abra.*?)\s.*?myexp&; AS> 2All: Объясните, почему он работает? :) Я думал, AS> он должен выдать массив из AS> всех abra\d, стоящих перед myexp, а он выдаёт AS> только самый последний. поставь m/regex/g, тогда по идее должен выдать массив всех. -- TEAM [Маньяки] Отправлено через сервер Форумы@mail.ru - http://talk.mail.ru --- ifmail v.2.15dev5 * Origin: Talk.ru (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор Архивное /ru.perl/648846a0f9b1.html, оценка из 5, голосов 10
|