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


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Artem Chuprina                       2:5020/400     18 Apr 2001  13:52:32
 To : George
 Subject : Re: хитрый регексп
 -------------------------------------------------------------------------------- 
 
 Здравствуй, George.
 
 В твоём письме от Fri, 30 Mar 2001 23:41:49 +0400 написано:
 
 George>  Есть некотоpая стpока. Hадо найти её или любое её сокpащение (n пеpвых
 George> символов, сопpовождаемых точкой). Можно ли pеализовать не пеpебиpая всех
 George> ваpиантов?
 
 George>  Hапpимеp, для стpоки abcdef pегэксп будет
 George> /(a\.|ab\.|abc\.|abcd\.|abcde\.|abcdef)+/
 George>                                       ^ последний ваpиант без точки,
 George> это не сокpащение. А пpиятней никак нельзя?
 
 С точки зрения скорости выполнения логичнее
 
 /a(?:b(?:c(?:d(?:e(?:f|\.)|\.)|\.)|\.)|\.)/
 
 "sjf;ajf;akjf;kajfd;lk abcdef sldjfsldkjf" этот вариант ловит в 3.5 раза
 быстрее, "sjf;ajf;akjf;kajfd;lk abc. sldjfsldkjf" - в 3.3, обламывается на
 "sjf;ajf;akjf;kajfd;lk abcde sldjfsldkjf" - в 5 с лишним раз (от твоего
 варианта тоже предварительно отрезаны скобки и +).
 
 Получается оный регекс посредством
 
 $re = join('(?:',split(//,$word)) . q'|\.)' x (length($word)-1)
 
 -- 
 Artem Chuprina                            E-mail: ran@ran.pp.ru
 Programmer                                  FIDO: 2:5020/371.32
 Memonet Ltd.                             Phone: +7-095-284-1356
 --- ifmail v.2.15dev5
  * Origin: NTV Internet (2:5020/400)
 
 

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

 Тема:    Автор:    Дата:  
 хитрый регексп   George   31 Mar 2001 00:41:49 
 Re: хитрый регексп   Artem Chuprina   18 Apr 2001 13:52:32 
Архивное /ru.perl/16483e740e813.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional