Perl仅打印匹配的内容

时间:2013-10-03 10:51:18

标签: regex perl unicode web-crawler

我正在使用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;
}

1 个答案:

答案 0 :(得分:3)

最好将字符与特定的Unicode属性匹配,而不是尝试制定适当的字符类。

0x0C00 ... 0x0C7F范围内的代码点对应于您可以使用正则表达式/\p{Telugu}/匹配的泰卢固语(印度语之一)中的字符。

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