我需要使用perl计算段落中的文章(a,an,the)。我尝试但它失败了
$a += scalar(split(/a./, $_));
$an += scalar(split(/\san\s/, $_));
$the += scalar(split(/the/, $_));
答案 0 :(得分:2)
@npinti
建议的正则表达式适合您,但您需要在列表上下文中使用全局模式匹配并将其转换为标量。
喜欢这个
use strict;
use warnings;
my $s = 'I need to count the articles (a , an, the) in a paragraph using perl.';
my @matches = $s =~ /\b(a|an|the)\b/g;
print scalar @matches, "\n";
<强>输出强>
5
答案 1 :(得分:1)
尝试使用以下内容:\b(a|an|the)\b
(示例here)。这可以分解为:
\ba\b
#寻找一篇文章。\ban\b
#寻找一篇文章。\bthe\b
#寻找文章。你的正则表达式的问题是,除了an
正则表达式之外,你不会检查文章本身是否是一个单词。
第一个正则表达式应匹配任何a
后跟任何字符,而第三个正则表示the
,无论其位置如何。
\b
将确保您匹配的任何内容都位于字符串的开头或被白色空格包围。
答案 2 :(得分:0)
(?:^|(?<=\s))(?:a|an|the)(?=\s|$)
您可以使用它来计算文章。