Forum Webscript.Ru

Программирование => Perl => Тема начата: SergioZh от 14 Августа 2001, 08:58:01

Название: Регулярные выражение. Не работает игнорирование регистра для русских строк.
Отправлено: SergioZh от 14 Августа 2001, 08:58:01
На Перле, ищу вхождение русской строки в русскую строку, и для игнорирования регистра указываю опцию "i" - не работает !
.. подключен модуль локаль (1251)
вот эта строка:
 $s1 =~s/($z)/("$a$1$b")/gie;

Как быть ?
Название: Регулярные выражение. Не работает игнорирование регистра для русских строк.
Отправлено: Haze от 14 Августа 2001, 22:18:11
Цитировать
А скобки до зарезу нужны? Без них работает...
И, кстати, зачем там /e ?
Скобки нужны, чтобы присвоить значание $1, \\e нужно для вычисления заменяющего выражения (по крайней мере, так кажется). А вот почему русский не пашет, не знаю :( Попробуй все-таки е убрать!
Название: Регулярные выражение. Не работает игнорирование регистра для русских строк.
Отправлено: Glader от 15 Августа 2001, 07:24:00
Так ведь в скобках одна переменная, она и равна $1 :D
Название: Регулярные выражение. Не работает игнорирование регистра для русских строк.
Отправлено: Glader от 14 Августа 2001, 13:55:54
А скобки до зарезу нужны? Без них работает...
И, кстати, зачем там /e ?
Название: Регулярные выражение. Не работает игнорирование регистра для русских строк.
Отправлено: от 17 Августа 2001, 12:15:38
надо
$s1 =~s/($z)/("$a$1$b")/gie;

допустим
$z=\'при\';

тогда пишем:

$s1 =~s/([П,п][Р,р][и,И])/("$a$1$b")/gie;

коряво, но вроде работает.