-3

Perl を使用して文中のキーワードを見つけたい場合、次のようなものがあります。

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

文に他のキーワードがあるかどうかを確認したい場合、マッチングをどのように変更すればよいですか?

4

4 に答える 4

0

いくつかの解決策があります。のようなものを使用するのが最も簡単です/keyword.*keyword/

文字列内のキーワードの数をカウントしたい場合 (2 つのキーワードがあるかどうかを単純にチェックするのではなく)、次のようにすることができます。

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

文に他の(異なる)キーワードが含まれているかどうかを確認したいですか、それとも同じキーワードが複数回含まれているかどうかを確認したいですか。

最初に、あなたは書くことができます

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

2つ目は次のようになります

my $n = () = $line =~ /keyword/g;
于 2012-07-14T17:17:14.270 に答える
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 に答える