|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : vilfred 2:5020/400 24 Apr 2002 02:16:00 To : Vilfred Subject : в догонку -------------------------------------------------------------------------------- в попытках осознать, как работает эта штука, написал еще один регексп: $u=~s%((pre|xml).*?/\2)|([\n\cM\cJ]+)%!m&$1&g?$1?$1:'<br>':'<br>'%gessi; но сначала объясню, как до него пришел. Hепонятки операторе или '|' который стоит до ([\n\cM\cJ]+), ведь в случае перевода каретки $1 реально существует и условие if? then:else в первом регекспе должно так-же сработать(т.е. втупую напечатать перевод каретки), но оно не срабатывает, а вместо этого возвращает ложь и подставляет <br>... Причем в исходном регекспе $u=~s%((pre|xml).*?/\2)|([\n\cM\cJ]+)%$1?$1:'<br>'%gesi; во второй половине замены условие $1, а если подставить $2 вместо $1, ведь в случае перевода каретки (pre|xml).*?/\2) не существует, а значит и не существует переменной $2 и она должна вернуть undef, который спровоцирует false в условии $2?$1:'br' и должно напечататься <br>. Решил сделать вот что, вместо if?then:else подставил s%m&pre|xmp&g?:% gesi, т.е. если переменная $_ внутри регекспа будет равна, то m// должно вернуть истину и тогда поставится действительно $1, содержащий пре или хмп, но оно не заработало. Пошел еще дальше, вместо условия then подставил в конструкцию ?$1?$1:'<br>': ожидая, что тут то оно уж даолжно верно сработать... но нифига, все начало работать только при отрицании !m// (что еще более странно )... в результате таких научных тыков получил регексп, который работает!!!(опять таки почему - не понимаю): $u=~s%((pre|xml).*?/\2)|([\n\cM\cJ]+)%!m&$1&g?$1?$1:'<br>':'<br>'%gessi; всетки gessi как то рифмуется с lessi лохнесским чудовищем, да и надо бы какннить выпендриться!! :) Относительно скорости работы этого регекспа не знаю, может и тормозит... Дима -- TEAM [Маньяки] Отправлено через сервер Форумы@mail.ru - http://talk.mail.ru --- ifmail v.2.15dev5 * Origin: Talk.ru (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/6488d9d17114.html, оценка из 5, голосов 10
|