![]() |
|
Модераторы: korob2001, ginnie |
![]()
|
|
| Гость_Сергей |
|
|||
|
Unregistered |
Привет!
Почему из-за русской буквы, стоящей после .+? неправильно работает RE? Дома в ActiveState Perl все работает правильно, а на американском сервере неправильно. Вот пример: $_='Результат поиска: найдено сайтов'; if (m!^Результат поиска.+?сайтов!m) - не находит. А замена с на \xF1 не помогает: if (m!^Результат поиска.+?\xF1айтов!m) - не находит. Если разделить пробелом, то уже находит: if (m!^Результат поиска.+? сайтов!m) Вот еще работающий вариант разделителя (прямо анекдот): if (m!^Результат поиска.+?\s{0}сайтов[^<]+<b>(\d+)</b>!m) Локаль выставляю так: use POSIX qw(locale_h); use locale; setlocale(LC_CTYPE, "ru_RU.cp1251"); И она работает (проверял в RE, uc и lc). Почему 8-мибитный символ влияет на результат? В других местах RE русские буквы не мешают работе даже без установки локали. Успехов! Сергей |
|||
|
||||
| korob2001 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2871 Регистрация: 29.12.2002 Репутация: 31 Всего: 61 |
if (m!^Результат поиска.+?сайтов!m)
То, что отмеченно красным - удали. Должно получиться что-то типа этого: if (m!Результат поиска.+?сайтов!m) Вот рабочий пример:
Удачи. Это сообщение отредактировал(а) korob2001 - 20.7.2004, 17:19 -------------------- "Время проходит", - привыкли говорить вы по неверному пониманию. "Время стоит - проходите вы". |
|||
|
||||
![]()
|
| Правила форума "Perl" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |