Здравствуйте коллеги.
Сижу, ломаю голову над регулярными выражениями по кириллице в perl.
Я правильно понимаю, что регулярные выражения по кириллице в perl не работают как надо?
Или нашелся метод обойти это?
Насчет locale - не думаю, что дело в ней порылось.
Простой пример.my $text = "Vъешь";
if ($text=~/[[:alnum:]]/)
{
print "Yes\n";
}Если первую букву слова сменить на русскую - все, привет, не сработает.
Locale стоит как ru_RU.KOI8. Не думаю, что если поставлю cp1251 все заработает.
Читайте маны(в данном случае man perlre), они рулят:
$ perl -le '$_="фыва"; print /\w/;'$ perl -le 'use locale;$_="фыва"; print /\w/;'
1
$ perl -le 'use locale;$_="фыва"; print /[[:alpha:]]/;'
1
>Читайте маны(в данном случае man perlre), они рулят:
>$ perl -le '$_="фыва"; print /\w/;'
>
>$ perl -le 'use locale;$_="фыва"; print /\w/;'
>1
>$ perl -le 'use locale;$_="фыва"; print /[[:alpha:]]/;'
>1Вот спасибо. А я перечитал все по regexp. Видимо не там рыл.
Еще раз спасибо.
ну так 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:] есть.