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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Коварный русский, Русский в регулярках 
:(
    Опции темы
migaro
Дата 19.12.2012, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



В общем я у меня есть куча html'ок.. В каждой есть строка "хлебных крошек".. В конце строки есть текст на русском.. Мне надо регуляркой находить русский текст в конце и сохранять в переменную.. вроде все просто.. Но я заметил такой ньюанс, что текст не находиться..

Я написал такой проверочный скрипт и начал капать..

Код

#!/usr/bin/perl

use 5.010;
use strict;
use warnings;

use locale;
use POSIX qw(locale_h);
setlocale(LC_ALL, "ru_RU.CP1251");

while (<>) {
  my $match = $1 if m#alt="arrow"\s/>\s(.*)\s</span>\s*?</td>$#;
  if ($match) {
    say "$1" if $match =~ m#"arrow">(.*)$#;
  }
}


Строка в которой должно находиться совпадение:

Код


                        <td width="100%" class="thead"><span class="pathway"><a href="/index.htm" tppabs="http://domain.ru/" class="pathway"> Главная</a> <img src="/arrow.png" tppabs="http://domain.ru/templates/paranoia/images/arrow.png" border="0" alt="arrow" /> <a href="/index-3.htm" tppabs="http://domain.ru/bankivska_sprava/" class="pathway"> Банковское дело</a> <img src="/arrow.png" tppabs="http://domain.ru/templates/paranoia/images/arrow.png" border="0" alt="arrow" /> Банковские операции - Васюренко OB. </span>                        </td>


HTML - коряв и негоден, это понятно, но не в этом сейчас дело. Дело в том, файлы мне прислали и они вроде как в cp1251. 
Локаль у меня ru_RU.UTF-8, но и ru_RU.CP1251 тоже установлена и скрипт должен исполняться под ней (setlocale(LC_ALL, "ru_RU.CP1251");)..
Но почему-то не хочет.. Может кто сталкивался с работой регулярок под русский ср1251?..

Это сообщение отредактировал(а) migaro - 19.12.2012, 17:09
PM MAIL   Вверх
arto
Дата 19.12.2012, 17:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



# cat a.txt | perl -0777 -lne 'BEGIN{ use encoding "cp1251", STDOUT => "utf8" } print join "\n", m#(\p{Cyrillic}+)#gsm;'
Главная
Банковское
дело
Банковские
операции
Васюренко
#

Добавлено через 2 минуты и 56 секунд
а если выход тоже в cp1251, то

# cat a.txt | perl -Mencoding=cp1251 -0777 -lne 'print join "\n", m#(\p{Cyrillic}+)#gsm;' 
Главная
Банковское
дело
Банковские
операции
Васюренко
#
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


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

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


 




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


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

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