使用Perl匹配句子中的单词?

时间:2011-12-09 03:12:48

标签: perl

我想在perl中提取两个单词之间的单词,但我不知道我可以使用正则表达式或任何lib来做到这一点吗?

示例:

$sen = "A short quick brown fox jumps over the lazy dog running in the market";

@sentence = split / /, $sen;
foreach my $word (@sentence) {

}        

我希望得到棕色 lazy 之间的单词以及左边的2个单词和右边的2个单词。

output:

words between: fox jumps over the
2 words from left: short quick
2 words from right: dog running

我怎么能想出上面的输出?

1 个答案:

答案 0 :(得分:3)

这是家庭作业吗?如果是这样,那么你应该在你的问题中这样说,你得到的答案将旨在帮助你学习而不是简单地提供解决方案。

您声明一个数组,其中一个元素包含整个句子字符串,包括开始和结束双引号。这可能不是你想要的,因为你的循环只会在$ word设置为句子字符串时执行一次。

您必须使用

启动每个Perl程序
use strict;
use warnings;

使调试更容易。

以下代码执行您所描述的内容。

use strict;
use warnings;

my $sentence = "A short quick brown fox jumps over the lazy dog running in the market";
my @sentence = split ' ', $sentence;

my @sample = grep /fox/ .. /the/, @sentence;
print "words between: @sample\n";

@sample = @sentence[-2..-1];
print "2 words from right: @sample\n";

@sample = @sentence[0..1];
print "2 words from right: @sample\n";

<强>输出

words between: fox jumps over the
2 words from right: the market
2 words from right: A short