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


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : InSAn                                2:5020/400     04 May 2001  13:05:15
 To : All
 Subject : Re: Проверка на принадлежность
 -------------------------------------------------------------------------------- 
 
 > >>> @array есть ("?","!","...")
 > >>> $scalar - "нифига"
 >
 > rcou>> Правленое и проверенное:
 >
 > rcou>> my $line="abcdef!!!";
 > rcou>> my $mask=("\Q".join('|',qw(? ! + .))."\E");
 >
 > >>                '\b('.join('|',map("\\Q$_\\E",@array)).')\b'
 >
 > >> все-таки...
 >
 > niar> Вариант 1:
 > niar> ---------------------------
 > niar> @array = ('AAA','bbb');
 > niar> $mask = '\b('.join('|',map("\\Q$_\\E",@array)).')\b';
 >
 > niar> $text = 'ddd eee AAA fff ggg';
 >
 > niar> if ($text =~ /$mask/i) { print 'Ok' }
 > niar> else { print 'Fig' }
 > niar> ---------------------------
 > niar> Результат - Fig
 >
 > niar> ===
 > niar> Вариант 2:
 > niar> ---------------------------
 > niar> @array = ('AAA','bbb');
 >
 > niar> $text = 'ddd eee aaa fff ggg';
 >
 > niar> if ($text =~ /\b(\QAAA\E|\Qbbb\E)\b/i) { print 'Ok' }
 > niar> else { print 'Fig' }
 > niar> ---------------------------
 > niar> Результат - Ok
 >
 > niar> Почему если вместо переменной $mask в выражение писать ее значение,
 
 то
 
 > niar> все - Ok, иначе - Fig?
 >
 > Судя по всему, полезла какая-то фигня с подстановкой бэкслешей. Что самое
 > интересное - пишу
 >
 > $mask = '\\b('.join('|',map('\\Q'.$_.'\\E',@array)).')\\b';
 > print $mask;
 >
 > (работа с STDIN в perl -l)
 > получаю
 >
 > \b(\QAAA\E|\Qbbb\E)\b
 >
 > То есть бэкслеши одинарные... Счетверение бэкслешей тоже не помогает...
 
 Да бакслеши здесь нипричем... (в дебагере проверял - все нормально, $mask
 равен тому, чему должен быть равен).
 Проблема в следующем: когда в переменной писать квантификаторы \Q или \E и
 эту переменную подставлять в регексп, то не работает... А без них (\Q \E) -
 все нормально.
 Почему? Как побороть?
 --
 - ---
        Best regards,    InSAn
 
     http://delphi.proext.com - Delphi-программисту
     http://adv.proext.com - Магазин сетевой рекламы
     http://shop.proext.com - Лучшие книги!
 Отправлено через сервер Talk.Ru - http://www.talk.ru
 --- ifmail v.2.15dev5
  * Origin: Talk.Ru (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/64880b866f70.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional