关键字的perl搜索句子

时间:2012-06-25 13:26:22

标签: perl match keyword

如果我想使用Perl在句子中找到关键字,我有类似这样的内容:

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

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

4 个答案:

答案 0 :(得分:0)

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

如果要计算字符串中关键字的数量(不只是检查是否有两个关键字),您可以执行以下操作:

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

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

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

这是一样的。

答案 1 :(得分:0)

如果你想处理所有比赛的每场比赛( g 修饰符):

my $number_of_matches = 0;

foreach $line (@lines) 
{ 
   while ( $line =~ m/keyword/g ) 
   {
      do_something_you_need();
      $number_of_matches++;
   }
}

答案 2 :(得分:0)

my @words=map {split / /;} @lines;

foreach my $el(@keywords) {

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

}

答案 3 :(得分:0)

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

首先,你可以写

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

而对于第二个,它看起来像这个

my $n = () = $line =~ /keyword/g;