0

我正在用 Perl 开发一个网络爬虫。它从页面中提取内容,然后进行模式匹配以检查内容的语言。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 范围内的代码点对应于泰卢固语(印度语言之一)中的字符,您可以使用 regex 进行匹配/\p{Telugu}/

您可能需要的其他属性是/\p{Kannada}//\p{Malayalam}//\p{Devanagari}//\p{Tamil}/

于 2013-10-03T11:38:07.730 回答