perl脚本下面打印整个字符串作为输出,但我期待输出为Perl。我是perl和regex的新手。有人请解释一下为什么我没有得到预期的输出。
my $txt='I am learning Perl';
$txt=~/(\w+)$/;
print $txt;
输出;
I am learning Perl
我期待的输出:
Perl
据我所知,输出应该是一个包含一个或多个字母数字字符的单词,并且从最后开始搜索模式。我不明白我在哪里错了。
答案 0 :(得分:4)
正则表达式匹配不会修改变量。它返回匹配列表或布尔值,具体取决于上下文。
在列表上下文中使用它来捕获匹配项。
my $txt='I am learning Perl';
my ($match) = $txt=~/(\w+)$/;
print $match;
答案 1 :(得分:2)
$txt
。
但是你得到一个新变量$1
,其中包含第一个捕获组的内容(在你的例子中包含'Perl'
。