Perl を使用して文中のキーワードを見つけたい場合、次のようなものがあります。
foreach $line (@lines)
{
if ($line =~/keyword/)
{
print $line;
}
}
文に他のキーワードがあるかどうかを確認したい場合、マッチングをどのように変更すればよいですか?
いくつかの解決策があります。のようなものを使用するのが最も簡単です/keyword.*keyword/
。
文字列内のキーワードの数をカウントしたい場合 (2 つのキーワードがあるかどうかを単純にチェックするのではなく)、次のようにすることができます。
for(@lines){
my $n = 0;
$n++ while /(keyword)/g;
print if ($n>2);
}
ところで、コードはより簡潔にすることができます。
for (@lines) {
print if /keyword/;
}
それは同じです。
文に他の(異なる)キーワードが含まれているかどうかを確認したいですか、それとも同じキーワードが複数回含まれているかどうかを確認したいですか。
最初に、あなたは書くことができます
if ($line =~ /keyword1|keyword2|keyword3/) { ... }
2つ目は次のようになります
my $n = () = $line =~ /keyword/g;
すべての一致の各一致を処理する場合 ( g修飾子):
my $number_of_matches = 0;
foreach $line (@lines)
{
while ( $line =~ m/keyword/g )
{
do_something_you_need();
$number_of_matches++;
}
}
my @words=map {split / /;} @lines;
foreach my $el(@keywords) {
@match=grep {$el eq $_} @words;
}