Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> регулярное выражение, находит не то что нужно 
V
    Опции темы
DEER
Дата 14.12.2005, 17:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 749
Регистрация: 12.4.2005
Где: г. Рязань

Репутация: 1
Всего: 13



Здравствуйте,
у меня есть два хеша, надо найти количество совпадений ключей
пытаюсь так
Код

    foreach my $key (keys %hash1)
    {
       if(map /^$key?/, %hash2)
       {
              #нашли совпадение
              $count += 1;
            }
   }

так вот, если в hash1 будет ключ "суд", а в sash2 "гоСУДарство", то он считает, что это совпадение, я вроде указал, что $key должен быть началом и концом строки, но что то не работает.

Не знаете почему?


--------------------
 
PM MAIL WWW ICQ MSN   Вверх
BlackLFL
Дата 14.12.2005, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 263
Регистрация: 15.9.2005
Где: Москва

Репутация: 8
Всего: 12



if(map /^$key$/, %hash2)
PM WWW   Вверх
DEER
Дата 14.12.2005, 17:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 749
Регистрация: 12.4.2005
Где: г. Рязань

Репутация: 1
Всего: 13



спасибо


--------------------
 
PM MAIL WWW ICQ MSN   Вверх
Kannabismus
Дата 14.12.2005, 22:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Тим Тоуди



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 20.11.2005

Репутация: 1
Всего: 2



То, что вы делаете, это проверяете совпадения ключей %hash1 с ключями и значениями %hash2. Если нужно считать совпадения ключей:

Код

foreach my $key (keys %hash1)
{
   if(exists $hash2{$key})
      {
         $count += 1;
      }
}

или короткий вариант с использованием map
Код

map {$count++ if exists $hash2{$_}} keys %hash1

PM   Вверх
DEER
Дата 15.12.2005, 11:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 749
Регистрация: 12.4.2005
Где: г. Рязань

Репутация: 1
Всего: 13



ещё один косяк
Код

my @arr = qw(интернет, интернет магазин, через интернет, спутниковый интернет, интернет одежда, интернет работа, интернет магазины одежды, интернет провайдеры, интернет игры, интернет радио, бесплатный интернет, подключение интернета, интернет библиотека, интернет программы, интернет кафе, интернет москва, интернет скачать, интернет заработок, интернет сайт, интернет сети, интернет реклама, интернет телефон, интернет книги, интернет доступ, настройка интернет, заработать интернет, детские интернет, создание интернета, интернет казино, детские интернет магазины, книжные интернет, интернет техники, книжный интернет магазин, интернет карты, интернет магазины техники, скорость интернета, косметика интернет, мобильный интернет, интернет магазин косметики, интернет аптеки, интернет реферат, продажа интернет, женский интернет, интернет обувь, интернет товары, выделенный интернет, телевидение интернет, петербург интернет, интернет магазин обуви, интернет магазин женской);

  if(map  /[Copyright|Яндекс|Ключевые|Статистика|Показов]/, @arr )
  {

    print map  /[Copyright|Яндекс|Ключевые|Статистика|Показов]/, @arr;
    print "ДА!!!!";
}


выводит
ДА!!!!

это что получается? он находит эти слова что ли?
Добавлено @ 11:33
всё, понял.
почему то ему [] не понравились


--------------------
 
PM MAIL WWW ICQ MSN   Вверх
Kiber_rat
Дата 15.12.2005, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


MACMANIAC
**


Профиль
Группа: Участник
Сообщений: 276
Регистрация: 18.4.2002
Где: Ashdod, Israel

Репутация: 7
Всего: 9



Ты просто ошибся в регулярном выражении, используй (?: ) вместо [ ].
Код
my @arr = ('интернет','интернет магазин','через интернет',
    'спутниковый интернет','интернет одежда','интернет работа',
    'интернет магазины одежды','интернет провайдеры','интернет игры',
    'интернет радио','бесплатный интернет','подключение интернета',
    'интернет библиотека','интернет программы','интернет кафе',
    'интернет москва','интернет скачать','интернет заработок',
    'интернет сайт','интернет сети','интернет реклама','интернет телефон',
    'интернет книги','интернет доступ','настройка интернет',
    'заработать интернет','детские интернет','создание интернета',
    'интернет казино','детские интернет магазины','книжные интернет',
    'интернет техники','книжный интернет магазин','интернет карты',
    'интернет магазины техники','скорость интернета','косметика интернет',
    'мобильный интернет','интернет магазин косметики','интернет аптеки',
    'интернет реферат','продажа интернет','женский интернет',
    'интернет обувь','интернет товары','выделенный интернет',
    'телевидение интернет','петербург интернет','интернет магазин обуви',
    'интернет магазин женской');
/(?:Copyright|Яндекс|Ключевые|Статистика|Показов)/ ? print "Find: $&\n" : next
    for @arr;
}
$& - текст совпадения (если найдено).


--------------------
Best regards!                                                             
@..@_____Ku6ep
=*=______\______KPbIC
Код
print join "",map{chr}(split/(\w{2})/,hex(int(2175.57302796298**2)))
PM WWW ICQ Skype Jabber YIM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0726 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.