|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Eugene Bodin 2:5020/400 29 Nov 2002 11:06:52 To : vilfred Subject : Re: Проблемы с логикой регулярных выражений -------------------------------------------------------------------------------- Hello vilfred, "vilfred" <dmitriy@genphys.phys.msu.su> wrote: > AS> 'fhjd abra1 jwfhui abra2 hiwf myexp jioer abra3' v> print "$1 $2 $3\n" if $t=~m/.*(abra\d+).*?myexp/ v> v> .* - жадный, поэтому второму .*? достается мало что... т.е. откаты v> назад работать не будут. В смысле? .* - жадный, поэтому захватывает всю строку, а потом (для достижения общего совпадения) отдаёт по одному символу. То есть нормально находит ближайшее abra\d+ к последнему myexp. v> но вот почему не работает print "$1 $2 $3\n" if $t=~m/(abra\d+).*?myexp/ v> для меня загадка... Работает, но не так, как хочется, а так, как написано: Hаходит первое abra\d+ в строке, если после него где-то есть (первый) myexp, а то, что между ними могут быть ещё abra\d+ , - это уже другой вопрос. Best regards, Eugene --- ifmail v.2.15dev5 * Origin: RadioScan (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор Архивное /ru.perl/65995f8ea496.html, оценка из 5, голосов 10
|