我正在使用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;
}
答案 0 :(得分:3)
最好将字符与特定的Unicode属性匹配,而不是尝试制定适当的字符类。
0x0C00 ... 0x0C7F范围内的代码点对应于您可以使用正则表达式/\p{Telugu}/
匹配的泰卢固语(印度语之一)中的字符。
您可能需要的其他属性包括/\p{Kannada}/
,/\p{Malayalam}/
,/\p{Devanagari}/
和/\p{Tamil}/