-3

如果我想使用 Perl 在句子中查找关键字,我有这样的东西:

foreach $line (@lines) 
{ 
   if ($line =~/keyword/) 
   {
      print $line;
   }
}

如果我想查看句子中是否有更多关键字,我应该如何更改匹配?

4

4 回答 4

0

有几种解决方案。最简单的方法是使用类似/keyword.*keyword/.

当您想计算字符串中关键字的数量时(不仅仅是检查是否有两个关键字),您可以执行以下操作:

for(@lines){
    my $n = 0;
    $n++ while /(keyword)/g;
    print if ($n>2);
}

顺便说一句,您的代码可以更简洁:

for (@lines) {
  print if /keyword/;
}

那是一样的。

于 2012-06-25T13:54:20.820 回答
0

如果要处理所有匹配项的每个匹配项(g修饰符):

my $number_of_matches = 0;

foreach $line (@lines) 
{ 
   while ( $line =~ m/keyword/g ) 
   {
      do_something_you_need();
      $number_of_matches++;
   }
}
于 2012-06-25T13:59:09.117 回答
0
my @words=map {split / /;} @lines;

foreach my $el(@keywords) {

    @match=grep {$el eq $_} @words;

}
于 2012-06-25T14:31:53.317 回答
0

您想查看句子是否包含其他(不同)关键字,还是要检查它是否多次包含相同的关键字。

首先,你可以写

if ($line =~ /keyword1|keyword2|keyword3/) { ... }

第二个,它看起来像这样

my $n = () = $line =~ /keyword/g;
于 2012-07-14T17:17:14.270 回答