|
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) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/16483e740e813.html, оценка из 5, голосов 10
|