Главная страница


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Sergey                               2:5020/400     21 Dec 2006  17:37:51
 To : All
 Subject : Hет логики в re
 -------------------------------------------------------------------------------- 
 
 Привет.
 
  Рассмотрим такую программку:
 
 $_='a';  s/.??//g;
 
  Кто угадает, что останется от строки? По логике, она не должна измениться.
  Сперва будет найдено пустое место в начале строки, и оно заменится на
 пустоту. Далее текущая позиция в строке будет увеличена на 1 символ, чтобы
 избежать зацикливания, т.к. найденный фрагмент был пустым.
  Второй раз будет найдена и заменена пустота в конце строки.
  А на самом деле во второй итерации поиска и замены будет найдена буква а и
 заменена на пустоту!
  Где логика? Ведь возврат (backtracking) возникает при отсутствии совпадения,
 а здесь этого отсутствия нет.
  Кстати, оператор s///g действует по логике - не удаляет а.
  В общем, ежик в тумане.
 
  Я сейчас пишу курс лекций по Perl regex, если у кого есть интересные и
 негромоздкие примеры их применения, буду рад узнать о них.
 Как пример, у Фридла есть задача разделения троек цифр в целом числе запятыми.
 
 Если что, емейл на сайте www.cronc.com
 
 Сергей
 
 --- ifmail v.2.15dev5.3
  * Origin: FidoNet Online - http://www.fido-online.com (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Hет логики в re   Sergey   21 Dec 2006 17:37:51 
 Re: Hет логики в re   Anton Yuzhaninov   21 Dec 2006 17:48:27 
 Re: Hет логики в re   Sergey   22 Dec 2006 14:18:27 
 Re: Hет логики в re   Artem Chuprina   22 Dec 2006 17:39:25 
Архивное /ru.perl/1667956598755.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional