计算段落中的文章

时间:2015-03-23 10:04:02

标签: regex perl

我需要使用perl计算段落中的文章(a,an,the)。我尝试但它失败了

$a += scalar(split(/a./, $_));
$an += scalar(split(/\san\s/, $_));
$the += scalar(split(/the/, $_));

3 个答案:

答案 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|$)

您可以使用它来计算文章。