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


ru.linux

 
 - RU.LINUX ---------------------------------------------------------------------
 From : Aleksey Cheusov                      2:5020/400     15 Sep 2002  18:49:54
 To : Artem Chuprina
 Subject : Re: Как grep'ом поискать по ИЛИ?
 -------------------------------------------------------------------------------- 
 
 Artem Chuprina <ran@ice.ru> writes:
 
 > Здравствуй, Aleksey Cheusov.
 > 
 > >> SAK>> Люди, ткните пальцем, как grep заставить искать по ИЛИ из двух слов?
 > >> SAK>> Как по "И" я знаю, а вот "ИЛИ"?
 > AC> > 
 > >> VW> egrep "(слово|слово)"
 > AC> > 
 > AC> > Вот "И" как раз сложнее...
 > 
 > AC> Кстати, а почему ни в одной regex библиотеке нет
 > AC> возможности пересекать/вычитать регулярные выражения.
 > 
 > Сэр не знаком с perl?
 
 Hеа, не знаком.
 И мне даже не стыдно.
 Ужас!
 Предпочитаю не редактировать бинарные файлы.
 Гусары!!! Молчать !!! Hо я уже знаю, что сейчас будет... :))
 
 Hо если в Perl отрицание есть - это хорошо.
 Hе знал.
 А вычитание в нем есть?
 
 > 
 > AC> Если regex engine DFA-based, то это несложно делается и
 > AC> алгоритмы давно изветны.
 > 
 > А есть уверенность, что с сохранением прочих свойств там все нормально? Ломы
 > туда закапываться, но известно, что отрицание - это лучший способ все сломать.
 > Кроме того, в MRE написано (сам не прикидывал), что с DFA невозможно
 > backreferences делать.
 
 Вот backreferences как-раз нужны ооочень редко.
 А вот вычитание пригодилось бы.
 
 > 
 > AC> Что может быть естественнее отрицать petyu вот так
 > 
 > AC> \!(petya)
 > AC> или вот так
 > AC> (.*\-petya)
 > 
 > AC> вместо
 > AC> $|[^p]|p[^e]|pe[^t]|pet[^y]|pety[^a]
 > 
 > Для более сложного выражения это будет уже недостаточно конечный автомат.
 
 Отрицание/вычитание/пересечение регулярных множеств остается регулярным
 множеством, так что здесь никаких проблем.
 
 > В
 > перле есть negative look-ahead и look-behind, но последний ограничен регексами
 
 Поищу в доках, а то что-то я не понял ;-)
 
 > константной длины.
 > 
 > -- 
 > Artem Chuprina
 > Communiware.net
 > RFC2822: <ran@ran.pp.ru>, FIDO: 2:5020/358.49, ICQ: 13038757
 
 -- 
 Best regards, Aleksey Cheusov.
 --- ifmail v.2.15dev5
  * Origin: Science Soft (2:5020/400)
 
 

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

 Тема:    Автор:    Дата:  
 Re: Как grep\'ом поискать по ИЛИ?   Aleksey Cheusov   15 Sep 2002 18:49:54 
 Re: Как grep\'ом поискать по ИЛИ?   Artem Chuprina   17 Sep 2002 13:21:44 
Архивное /ru.linux/172837db9184b.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional