URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 7582
[ Назад ]

Исходное сообщение
"Регулярные выражения perl по кирилице."

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

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

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


Содержание

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

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


"Регулярные выражения perl по кирилице."
Отправлено als , 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. Видимо не там рыл.
Еще раз спасибо.


"Регулярные выражения perl по кирилице."
Отправлено angra , 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:] есть.