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

Поиск:

Закрытая темаСоздание новой темы Создание опроса
> регулярные выражения, операции над строками 
:(
    Опции темы
alyam
Дата 22.8.2006, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



локаль пытаюсь установить, как выше указано - выдается ошибка:
#perl: Can't locate loadable object for module POSIX in @INC (@INC contains: . D:/MMC D:/MMC) at main.c line 50 BEGIN failed--compilation aborted at D:/MMC /mmc.ini line 9.

даже если я posix.pm скопирую, и xsloader.pm в d:/mmc

PM MAIL   Вверх
amg
Дата 22.8.2006, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



С локалью лучше разобраться, жить будет проще. А уж если не получится, то в крайнем случае можно сделать свой uc.
Код

...
$: = "$1 " . uc_my($2);
...
sub uc_my {
  my $str = shift;
  $str =~ tr/ёйцукенгшщзхъфывапролджэячсмитьбю/ЁЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ/;
  return $str;
}

PM MAIL   Вверх
rschnz
Дата 22.8.2006, 20:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Вопрос по регулярным выражениям smile

Имеется некоторый сайт, в html которого есть несколько блоков (упрощенно) <aaa> text </bbb>, т.е. известны маркеры начала и конца блоков, текст которых необходимо выделить. 

Проблема в том, что text - это произвольный текст, в котором - единственное, что известно - не встречается маркер конца. Если бы это был, например, некоторый URL, то я сделал бы так:
Код

my @imgs = $html =~ m/<a href="([^"]+jpg).*"/ig;

В моем же случае вместо " надо поставить слово - маркер конца. Но [] ведь только для символов smile Подскажите рациональный способ сделать это, желательно с использование regex.
PM MAIL   Вверх
amg
Дата 23.8.2006, 07:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата
... есть несколько блоков (упрощенно) <aaa> text </bbb>, т.е. известны маркеры начала и конца блоков, текст которых необходимо выделить. ... text - это произвольный текст, в котором - единственное, что известно - не встречается маркер конца.

Код
$block = '<aaa> text </bbb>';

# Самое простое
$block =~ m/<aaa>(.+?)<\/bbb>/;

# Если маркеров конца может быть несколько
$block =~ m/<aaa>(.+?)<\/(?:bbb|ccc|ddd)>/;

PM MAIL   Вверх
alyam
Дата 26.8.2006, 02:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



подскажите как сделать:

в файле несколько строк.
каждая строка обрабатывается и выводится на экран.
нужно если строка содержит многоточие в начале, то ее необходимо добавить к предыдущей и вывести в одну строку.
как это сделать? запоминать строку, затем проверять следующую строку на наличие многоточия и выводить в зависимости от этого ? 
помоему не рационально, потому что первая строка выводится вне зависимости от того какая за ней следует.
можно ли перенести строку с многоточием на строчку выше? как проигнорировать символ перевода строки? ))
PM MAIL   Вверх
Nab
Дата 26.8.2006, 05:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(alyam @  26.8.2006,  02:54 Найти цитируемый пост)
можно ли перенести строку с многоточием на строчку выше? как проигнорировать символ перевода строки? ))

Это элементарно, Ватсон, просто не выводить его....  smile

А идея такова:
Код

# этот переключатель чтобы не выводить перевод строки в самом начале
$first = 1;
#читаем файл
open FILE, "<file.txt" || die "Cannot open file.txt $!";
while (<FILE>) {
# убираем перевод строки
    chomp;
# выводим его если не многоточие или не первая строка
    print "\n" unless /^\s*\.+/ && $first;
# выводим саму строку.
    print;
# не первая строка
    $first &&= 0;
}
# Ну и вывод завершающего перевода строки, по необходимости...
print "\n";

1;


Я код не проверял, но идея должна быть понятна ...


--------------------
 Чтобы правильно задать вопрос нужно знать больше половины ответа...
Perl Community 
FREESCO in Ukraine 
PM MAIL   Вверх
alyam
Дата 26.8.2006, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



с файлом работает. а если это например чат, в котором аналигичным образом надо обработать строки, тогда получится что выводится строка сама по себе, потом я снова вывожу ее print  $_ (притом без цвета !).
PM MAIL   Вверх
Nab
Дата 26.8.2006, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



А поподробней можно?


--------------------
 Чтобы правильно задать вопрос нужно знать больше половины ответа...
Perl Community 
FREESCO in Ukraine 
PM MAIL   Вверх
alyam
Дата 26.8.2006, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



объяснять долго и сложно. если интересно почитай тут http://haali.cs.msu.ru/mmc/sample.mmcrc
PM MAIL   Вверх
nitr
Дата 26.8.2006, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

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



alyam, новую тему запости...


--------------------
PM   Вверх
Nab
Дата 26.8.2006, 18:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(alyam @ 26.8.2006,  14:17)
объяснять долго и сложно. если интересно почитай тут http://haali.cs.msu.ru/mmc/sample.mmcrc

Отвечать  долго и сложно, если хочешь, купи себе книжку...

А если нужен ответ, то будьте добры изложите свою проблему....


--------------------
 Чтобы правильно задать вопрос нужно знать больше половины ответа...
Perl Community 
FREESCO in Ukraine 
PM MAIL   Вверх
alyam
Дата 26.8.2006, 19:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



хорошо попытаюсь объяснить.
Триггеры.
Триггеру передаются запрошенные совпадения ($1-$9) и пришедшая от сервера строка, на которую этот триггер настроен. (На самом деле триггеру передаются 2 строки: $_ - это строка без цветов, и $; -  строка с цветами во внутреннем формате mmc.) Триггер МОЖЕТ изменять эти строки, но:
    1) это не рекомендуется
    2) если триггер изменяет строки, он должен сам следить за соответствием строк $_ и $;
Кроме того, существует специальная переменная, $:. Из нее нельзя читать, но ей можно присваивать, и если ей присвоить строку с цветами, то эта строка попадет и в $;, а в $_ будет записана эта же строка без цветов.

пример:
trig {CODE} '.*';
#триггер будет обрабатывать каждую строку приходящую от сервера
если стока начинается с многоточия, как проигнорировать символ перевода строки?

т.е. если написать
trig {chomp} '.*';
или trig {chomp} $_, что одно и тоже
то это не приведет ни к какому результату

Это сообщение отредактировал(а) alyam - 26.8.2006, 19:51
PM MAIL   Вверх
korob2001
Дата 26.8.2006, 20:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

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



alyam - создайте новый топик.
Модератор: Читаем правила форума. Один топик - один вопрос.
Тема закрыта.




--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
Закрытая темаСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


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

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


 




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


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

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