Автор Тема: Регулярные выражение. Не работает игнорирование регистра для русских строк.  (Прочитано 2950 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн SergioZh

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 1
  • +0/-0
  • 0
    • Просмотр профиля
    • magician.h1.ru
На Перле, ищу вхождение русской строки в русскую строку, и для игнорирования регистра указываю опцию "i" - не работает !
.. подключен модуль локаль (1251)
вот эта строка:
 $s1 =~s/($z)/("$a$1$b")/gie;

Как быть ?

Оффлайн Haze

  • Просто я...
  • Пользователь
  • **
  • Сообщений: 70
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.baltic.ee
Цитировать
А скобки до зарезу нужны? Без них работает...
И, кстати, зачем там /e ?
Скобки нужны, чтобы присвоить значание $1, \\e нужно для вычисления заменяющего выражения (по крайней мере, так кажется). А вот почему русский не пашет, не знаю :( Попробуй все-таки е убрать!

Оффлайн Glader

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 66
  • +0/-0
  • 0
    • Просмотр профиля
    • http://glader.ru
Так ведь в скобках одна переменная, она и равна $1 :D

Оффлайн Glader

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 66
  • +0/-0
  • 0
    • Просмотр профиля
    • http://glader.ru
А скобки до зарезу нужны? Без них работает...
И, кстати, зачем там /e ?

  • Гость
надо
$s1 =~s/($z)/("$a$1$b")/gie;

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

тогда пишем:

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

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

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28