0

Perl で Web クローラーを開発しています。ページからコンテンツを抽出し、パターン マッチを実行してコンテンツの言語をチェックします。コンテンツの照合には Unicode 値が使用されます。

抽出されたコンテンツに複数の言語のテキストが含まれている場合があります。ここで使用したパターン マッチではすべてのテキストが出力されますが、パターンで指定された Unicode 値に一致するテキストのみを出力したいと考えています。

my $uu         = LWP::UserAgent->new('Mozilla 1.3');
my $extractorr = HTML::ContentExtractor->new();

# create response object to get the url
my $responsee = $uu->get($url);
my $contentss = $responsee->decoded_content();

$range = "([\x{0C00}-\x{0C7F}]+)";    # match particular language

if ($contentss =~ m/$range/) {
  $extractorr->extract($url, $contentss);
  print "$url\n";
  binmode(STDOUT, ":utf8");
  print $extractorr->as_text;
}
4

1 に答える 1

3

適切な文字クラスを定式化しようとするよりも、文字を特定の Unicode プロパティに一致させる方がよいでしょう。

範囲 0x0C00...0x0C7F のコード ポイントは、正規表現を使用して照合できるテルグ語 (インド言語の 1 つ) の文字に対応します/\p{Telugu}/

おそらく必要になる他のプロパティは/\p{Kannada}/、、、、および/\p{Malayalam}//\p{Devanagari}//\p{Tamil}/

于 2013-10-03T11:38:07.730 に答える