Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: разработка для Web > Регулярные выражения


Автор: marlen 11.8.2003, 20:13
Проблема вот в чём, у меня есть файл, в котором встречаются следующие выражения Мама, мама и МАМА. Мне нужно их все
оттуда вытащить, это не помогает:
##############################
print if /мама/i;
##############################
Спасибо.

Автор: MuToGeN 11.8.2003, 21:15
/[Мм][Аа][Мм][Аа]/
но, чувствую, это не лучший вариант...

Автор: HalkaR 11.8.2003, 21:33
Скорее всего проблема в руской кодировке.

Автор: marlen 11.8.2003, 21:50
Снова я, извини я не правильно обьяснил, имеется в виду разный регистр букв, и не обязательно это слово например: print if /$var/i;

Автор: HalkaR 12.8.2003, 10:05
Странно, что не работает, должно работать, может полностью исходник дашь, чтобы мы посмотрели?

Автор: marlen 14.8.2003, 06:52
#!C:/Perl/bin/perl
use CGI qw(param);
my $gg=param("query");
print"Content-Type: text/html; charset: windows-1251\n\n";
open(HJ,"<../site/Price.htm")|| die "ERORR!!!\n";
open(JK,">>../cgi-bin/test.htm")|| die "ERORR!!!\n";
while(<HJ>){
print JK if /$gg/i;
}
close(HJ);
close(JK);
open(JK,"<../cgi-bin/test.htm")|| die "ERORR!!!\n";
while(<JK>){
print"&nbsp&nbsp&nbsp&nbsp";
print;
print"<BR>";
}
close(JK);
unlink("../cgi-bin/test.htm");

Автор: Wowa 14.8.2003, 10:42
попробуй перевести все в нижний регистр smile.gif

Автор: marlen 17.8.2003, 16:36
Сложный пока для меня процесс, в полутора тысячном(строк) прайсе поменять регистр некоторых слов, пока не получается, но нашел другой
выход посоветуйте будет-ли работать.
###############################################
<a href="http://localhost/cgi-bin/env.pl?query=Водка|ВОДКА|водка">
<font size="1" face="Arial" color="#800000"><b><li>Водка</b></font>
</a>
###############################################
Спасибо.

Автор: HalkaR 18.8.2003, 17:05
Твоя проблема не в поиске, а втом, что при передаче строки поиска скрипту русский текст перкодируется и в перменной $gg лежит уже не русски теск, а его коды. Поэтому ессно ничего не находится.

Хотя параметр i действительно не работает для русского теста - это факт.

Но неработающий i можно исправить. Под Вынь надо добавть строки
Код
use locale;
use POSIX qw (locale_h);
setlocale(LC_CTYPE, "Russian_Russia.1251");
Под Юникс
Код
use locale;
use POSIX qw (locale_h);
setlocale(LC_CTYPE, 'ru_RU.KOI8-R');

Автор: marlen 18.8.2003, 21:12
Серьёзный ответ, спасибо, а то уже ещё назрел вопрос, а ты опередил,
smile.gif всё равно спрошу, про локали читал, но что в Винде его надо
использовать,sad.gif автор меня подвёл. Вопрос:
Если потом грузить скрипт на сервак, то чо надо потом менять на код под
Unix?

Автор: HalkaR 18.8.2003, 21:37
Я проверял только под Вынь - там действительно с добавлением этих строк все заработало. Вероятнее всего изменять строки всетаки надо. Хотя коль скоро данные скрипту пердаются, а не считываются из файла утыерждать этого со всей уверенностью не могу.

Автор: marlen 22.8.2003, 22:57
Пашет всё.
Thanks:)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)