如果我想使用 Perl 在句子中查找关键字,我有这样的东西:
foreach $line (@lines)
{
if ($line =~/keyword/)
{
print $line;
}
}
如果我想查看句子中是否有更多关键字,我应该如何更改匹配?
有几种解决方案。最简单的方法是使用类似/keyword.*keyword/
.
当您想计算字符串中关键字的数量时(不仅仅是检查是否有两个关键字),您可以执行以下操作:
for(@lines){
my $n = 0;
$n++ while /(keyword)/g;
print if ($n>2);
}
顺便说一句,您的代码可以更简洁:
for (@lines) {
print if /keyword/;
}
那是一样的。
如果要处理所有匹配项的每个匹配项(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;
}
您想查看句子是否包含其他(不同)关键字,还是要检查它是否多次包含相同的关键字。
首先,你可以写
if ($line =~ /keyword1|keyword2|keyword3/) { ... }
第二个,它看起来像这样
my $n = () = $line =~ /keyword/g;