如果我想使用Perl在句子中找到关键字,我有类似这样的内容:
foreach $line (@lines)
{
if ($line =~/keyword/)
{
print $line;
}
}
如果我想查看句子中是否有更多关键字,我应该如何更改匹配?
答案 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;