0

下面的 perl 脚本将整个字符串打印为输出,但我期望输出为 Perl。我是 perl 和正则表达式的新手。有人可以解释一下为什么我没有得到预期的输出。

my $txt='I am learning Perl'; 
$txt=~/(\w+)$/;
print $txt;

输出;

I am learning Perl

我期待的输出:

Perl

据我所知,输出应该是一个包含一个或多个字母数字字符的单词,并且模式的搜索从末尾开始。我不明白我在哪里错了。

4

2 回答 2

4

正则表达式匹配不会修改变量。它根据上下文返回匹配列表或布尔值。

在列表上下文中使用它来捕获匹配项。

my $txt='I am learning Perl'; 
my ($match) = $txt=~/(\w+)$/;
print $match;
于 2013-01-22T13:29:36.503 回答
2

$txt不被匹配操作修改。

但是您会得到一个新变量$1,其中包含第一个捕获组的内容('Perl'在您的示例中包含。

于 2013-01-22T13:29:26.750 回答