|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Igorr V Syurtukov 2:450/199 03 Apr 2004 18:19:20 To : All Subject : почему? -------------------------------------------------------------------------------- Регэксповый вопрос: хочу в строке (на самом деле в ней имя мп3-шки) заменить кучу слов на их нижнерегистровый вариант. Делал так (старый вариант): $mp3=~s/( To | The | A |...| An )/\L$1/ig; ...ну не заменяет второе вхождение, если идет, к примеру "... In The ..."! До первого отрабатывает и все тут! Почти точно помню, что раньше делало все нормально, а теперь упс! Бился головой об стенку, все перепробовал - не судьба. Извратился так: === @array=("From","At","To","Of","On","The","For","An"); foreach $tmp(@array){$mp3=~s/(?<!\-)(\s$tmp\s)/\L$1/ig;}; === смысл работы - все эти At, To и т.д., если они не первым словом после "-" стоят и окружены пробелами опустить в нижний регистр, невзирая на их текущий регистр (ведь может быть и From и FROM и FROm). Почему не работает верхняя замена в глобале? --- * Origin: [IVS] (2:450/199) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/1897406ef3f5.html, оценка из 5, голосов 10
|