我想在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
我怎么能想出上面的输出?
答案 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