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


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Stanislav Nekrasov                   2:5020/400     08 May 2001  17:45:24
 To : All
 Subject : Re: Проверка на принадлежность
 -------------------------------------------------------------------------------- 
 
 Hello InSAn;
 
 > > Судя по всему, полезла какая-то фигня с подстановкой бэкслешей. Что
 
 самое
 
 > > интересное - пишу
 > >
 > > $mask = '\\b('.join('|',map('\\Q'.$_.'\\E',@array)).')\\b';
 > > print $mask;
 > >
 > > (работа с STDIN в perl -l)
 > > получаю
 > >
 > > \b(\QAAA\E|\Qbbb\E)\b
 > >
 > > То есть бэкслеши одинарные... Счетверение бэкслешей тоже не помогает...
 >
 > Да бакслеши здесь нипричем... (в дебагере проверял - все нормально, $mask
 > равен тому, чему должен быть равен).
 > Проблема в следующем: когда в переменной писать квантификаторы \Q или \E и
 > эту переменную подставлять в регексп, то не работает... А без них (\Q
 
 \E) -
 
 > все нормально.
 > Почему? Как побороть?
 
 Hе знаю, может я не прав, но я тоже пришел к выводу, что \Q и \E не
 обрабатываются, если подставляются из переменной.
 Как побороть, не знаю, но пришло в голову решение такое:
 
 @array = ('AAA[b]c','bbb');
 $mask = '\b('.join('|',map("\Q$_\E",@array)).')\b';
 
 $text = 'ddd eee AAA[b]с fff bbb ggg ccc';
 print "$text\n$mask\n";
 
 if ($text =~ /$mask/i) { print 'Ok' }
 else { print 'Fig' };
 
 ,т.е. заставить обрабатывать строчки сам map ... вроде бы работает... по
 крайней мере на приведенном примере и аналогичных. Кстати говоря, если уж
 обрабатывать такие "слова", которые содержат спец-символы, то может не
 пройти из-за '\b' -- если например слово будет 'abc[a]' -- т.к. \b --
 граница между \w символом и \W или концом\началом строки... есесно, ] к \w
 не отнесется... так что если такое возможно, придется убирать \b
 
 (прошу извинить, если наговорил глупостей -- но мне так показалось :))
 
 best WISHes, Stas.
 --- ifmail v.2.15dev5
  * Origin: Demos online service (2:5020/400)
 
 

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

 Тема:    Автор:    Дата:  
 Проверка на принадлежность   InSAn   02 May 2001 15:46:40 
 Re: Проверка на принадлежность   Vladimir Podgorny   02 May 2001 15:54:44 
 Проверка на принадлежность   Alex Semenyaka   02 May 2001 19:30:54 
 Re: Проверка на принадлежность   Vladimir Podgorny   03 May 2001 10:51:30 
 Re: Проверка на принадлежность   Artem Chuprina   03 May 2001 13:02:11 
 Re: Проверка на принадлежность   InSAn   04 May 2001 09:27:27 
 Re: Проверка на принадлежность   Artem Chuprina   04 May 2001 12:24:35 
 Re: Проверка на принадлежность   InSAn   04 May 2001 13:05:15 
 Re: Проверка на принадлежность   Stanislav Nekrasov   08 May 2001 17:45:24 
 Проверка на принадлежность   Anatolij Kupriyanov   04 May 2001 11:19:41 
 Re: Проверка на принадлежность   Artem Chuprina   07 May 2001 12:47:01 
 Проверка на принадлежность   Anatolij Kupriyanov   09 May 2001 12:08:40 
 Re: Проверка на принадлежность   Artem Chuprina   10 May 2001 16:05:40 
 Проверка на принадлежность   Alexey Litvinuke   03 May 2001 06:13:04 
Архивное /ru.perl/549420cb096d.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional