The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Регулярные выражения perl по кирилице."
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [ Отслеживать ]

"Регулярные выражения perl по кирилице."  
Сообщение от als email(??) on 07-Сен-08, 17:35 
Здравствуйте коллеги.
Сижу, ломаю голову над регулярными выражениями по кириллице в perl.
Я правильно понимаю, что регулярные выражения по кириллице в perl не работают как надо?
Или нашелся метод обойти это?
Насчет locale - не думаю, что дело в ней порылось.
Простой пример.

my $text = "Vъешь";
if ($text=~/[[:alnum:]]/)
{
   print "Yes\n";
}

Если первую букву слова сменить на русскую - все, привет, не сработает.
Locale стоит как ru_RU.KOI8. Не думаю, что если поставлю cp1251 все заработает.

Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Регулярные выражения perl по кирилице."  
Сообщение от angra (ok) on 07-Сен-08, 17:43 
Читайте маны(в данном случае man perlre), они рулят:
$ perl -le '$_="фыва"; print /\w/;'

$ perl -le 'use locale;$_="фыва"; print /\w/;'
1
$ perl -le 'use locale;$_="фыва"; print /[[:alpha:]]/;'
1

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Регулярные выражения perl по кирилице."  
Сообщение от als email(??) on 07-Сен-08, 19:21 
>Читайте маны(в данном случае man perlre), они рулят:
>$ perl -le '$_="фыва"; print /\w/;'
>
>$ perl -le 'use locale;$_="фыва"; print /\w/;'
>1
>$ perl -le 'use locale;$_="фыва"; print /[[:alpha:]]/;'
>1

Вот спасибо. А я перечитал все по regexp. Видимо не там рыл.
Еще раз спасибо.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Регулярные выражения perl по кирилице."  
Сообщение от angra (ok) on 08-Сен-08, 15:02 
ну так man perlre и является основным по регексам. Могу даже нужный кусок процитировать
A "\w" matches a single alphanumeric character (an alphabetic character, or a decimal digit) or "_", not a whole word.  Use "\w+" to match a string of Perl-identifier characters (which isn't the same as matching an English word).  If "use locale" is in effect, the list of alphabetic characters generated by "\w" is taken from the current locale.  See perllocale.
Чуть дальше и про [:alpha:] есть.  
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру