Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
下面的 perl 脚本将整个字符串打印为输出,但我期望输出为 Perl。我是 perl 和正则表达式的新手。有人可以解释一下为什么我没有得到预期的输出。
my $txt='I am learning Perl'; $txt=~/(\w+)$/; print $txt;
输出;
I am learning Perl
我期待的输出:
Perl
据我所知,输出应该是一个包含一个或多个字母数字字符的单词,并且模式的搜索从末尾开始。我不明白我在哪里错了。
正则表达式匹配不会修改变量。它根据上下文返回匹配列表或布尔值。
在列表上下文中使用它来捕获匹配项。
my $txt='I am learning Perl'; my ($match) = $txt=~/(\w+)$/; print $match;
$txt不被匹配操作修改。
$txt
但是您会得到一个新变量$1,其中包含第一个捕获组的内容('Perl'在您的示例中包含。
$1
'Perl'