【发布时间】:2011-01-31 01:02:41
【问题描述】:
这个正则表达式已经过时了。 :( 还有一个问题: 我需要计算段落中的单词数和句子数。我尝试使用的代码是这样的:
my $sentencecount = $file =~ s/((^|\s)\S).*?(\.|\?|\!)/$1/g;
my $count = $file =~ s/((^|\s)\S)/$2/g;
print "Input file $ARGV[1] contains $sentencecount sentences and $count words.";
我的结果对这两个计数都返回 63。我知道这是不正确的,至少就字数而言。这是使用替代计数过程的结果吗?如果是这样,我该如何纠正?
【问题讨论】:
-
你知道,我认为可能有更简单的方法来计算字符串中的单词...
-
显然你应该发布输入文件。
-
另外,
s///g从 替换文本开始每个匹配项(这样,s/a/ab/g就不会导致无限循环)。这就是问题的一部分。此外,您的句子计数正则表达式非常奇怪——它用该句子中的第一个字符替换了第一句话(可能前面有一个空格)——这就是$1中的内容。 -
但是
C.S. Lewis或abr.呢