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


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Andrew Sagulin                       2:6037/1.28    24 Nov 2002  02:54:08
 To : vilfred
 Subject : Проблемы с логикой регулярных выражений
 -------------------------------------------------------------------------------- 
 
 
 24 Nov 02 01:23, vilfred wrote to Andrew Sagulin:
 
  AS>> $txt =~ /(?:(abra\d).+?)+myexp/;
 
  v> ?: - группировка просто.
 
      Да знаю, я же её сам написал... :)
 
  v> ты написал дословно следующее
 
  v> выдрать ненулевое число abra\d на минимальном расстоянии от myexp,
  v> повторяющееся больше чем один раз.
 
      Hе "больше, чем один раз", а "один и более раз". Кстати,
 /(?:(abra\d).+?)*myexp/ работает аналогично.
 
  v> Знак вопроса при квантификаторе + делает его щедрым, еслиб знака вопроса
  v> небыло бы, то он был бы жадным, т.е. высветил бы самое первое(т.е. самое
  v> далеко от него расположенное) вхождение abra\d от myexp.
 
      Ок, тогда объясни, почему  /(?:(abra\d).+?)myexp/ всегда выдаёт "abra1".
 
  v> я бы проще поступил: print $1 if $txt=~m&(abra.*?)\s.*?myexp&;
 
      Твой пример выдаёт "abra1", т.е. не работает.
 
  AS>> 2All: Объясните, почему он работает? :) Я думал,
  AS>> он должен выдать массив из
  AS>> всех abra\d, стоящих перед myexp, а он выдаёт
  AS>> только самый последний.
 
  v> поставь m/regex/g, тогда по идее должен выдать массив всех.
 
      Hе должен. Подстрока myexp - в единственном экземпляре, поэтому и решение
 будет одно.
 
      Я думаю, чтобы понять, почему приведённое в самом начале выражение работает
 именно так, умозрительных рассуждений будет не достаточно: надо построить
 соответствующий конечный автомат и пройтись по нему, но мне это "слабО", да и не
 стоит оно того, пожалуй.
 
                                                       Всего Вам...
                                                         Андpей.
 
 --- GoldED+/W32 1.1.5-20011130
  * Origin: В стране не без народа. (2:6037/1.28)
 
 

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

 Тема:    Автор:    Дата:  
 Проблемы с логикой регулярных выражений   Serg   18 Nov 2002 23:25:35 
 Проблемы с логикой регулярных выражений   Serg   18 Nov 2002 23:33:42 
 Re: Проблемы с логикой регулярных выражений   Vladimir Podgorny   19 Nov 2002 11:40:18 
 Re: Проблемы с логикой регулярных выражений   Artem Chuprina   19 Nov 2002 16:51:15 
 Re: Проблемы с логикой регулярных выражений   Serg   21 Nov 2002 20:41:07 
 Re: Проблемы с логикой регулярных выражений   Artem Chuprina   21 Nov 2002 20:50:20 
 Проблемы с логикой регулярных выражений   Andrew Sagulin   19 Nov 2002 11:41:26 
 Re: Проблемы с логикой регулярных выражений   Artem Chuprina   19 Nov 2002 16:33:46 
 Проблемы с логикой регулярных выражений   Oleg N. Kotenko   19 Nov 2002 18:20:50 
 Проблемы с логикой регулярных выражений   Alexey Sheynuk   20 Nov 2002 10:26:49 
 Re: Проблемы с логикой регулярных выражений   vilfred   24 Nov 2002 02:23:36 
 Проблемы с логикой регулярных выражений   Andrew Sagulin   24 Nov 2002 02:54:08 
 Re: Проблемы с логикой регулярных выражений   vilfred   25 Nov 2002 13:34:12 
 Проблемы с логикой регулярных выражений   Andrew Sagulin   25 Nov 2002 20:01:54 
 Re: Проблемы с логикой регулярных выражений   vilfred   29 Nov 2002 02:16:00 
 Re: Проблемы с логикой регулярных выражений   Eugene Bodin   29 Nov 2002 11:06:52 
 Проблемы с логикой регулярных выражений   Kostya Altuhov   29 Nov 2002 10:54:42 
 Re: Проблемы с логикой регулярных выражений   vilfred   02 Dec 2002 16:19:29 
 Проблемы с логикой регулярных выражений   Kostya Altuhov   05 Dec 2002 22:36:33 
Архивное /ru.perl/27923de00bb0.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional