Как мне сопоставить русское слово в тексте Unicode, используя Perl? - PullRequest
3 голосов
/ 01 мая 2009

У меня есть веб-сайт, на котором я хочу переэкспериментировать, скажем http://www.ru.wikipedia.org/wiki/perl. Сайт на русском и я хочу вытащить все русские слова. Совпадение с \w+ не работает, а сопоставление с \p{L}+ возвращает все.

Как мне это сделать?

Ответы [ 4 ]

3 голосов
/ 01 мая 2009
perl -MLWP::Simple -e 'getprint "http://ru.wikipedia.org/wiki/Perl"'
403 Forbidden <URL:http://ru.wikipedia.org/wiki/Perl>

Ну, это не помогает!

Сначала скачивая копию, похоже, это работает:

use Encode;

local $/ = undef;
my $text = decode_utf8(<>);

my @words = ($text =~ /([\x{0400}-\x{04ff}]+)/gs);

foreach my $word (@words) {
  print encode_utf8($word) . "\n";
}
3 голосов
/ 05 февраля 2013

Все эти ответы слишком сложны. Используйте это

$text =~/\p{cyrillic}/

БАМ.

0 голосов
/ 21 января 2015

Просто оставь это здесь. Соответствует определенному русскому слову

use utf8;
...
utf8::decode($text);
$text =~ /привет/;
0 голосов
/ 01 мая 2009

Хорошо, тогда попробуйте это:

#!/usr/bin/perl

use strict;
use warnings;
use LWP::UserAgent;

my $ua = LWP::UserAgent->new;

my $response = $ua->get("http://ru.wikipedia.org/wiki/Perl");

die $response->status_line unless $response->is_success;

my $content = $response->decoded_content;

my @russian = $content =~ /\s([\x{0400}-\x{052F}]+)\s/g;

print map { "$_\n" } @russian;

Я полагаю, что набор символов кириллицы начинается с 0x0400, а набор символов кириллицы заканчивается на 0x052F, поэтому многие слова должны быть получены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...