【发布时间】:2013-10-25 07:05:41
【问题描述】:
我对@987654321@这样的正则表达式感到困惑
#!usr/bin/perl
use strict;
use warnings;
my $text = "scott";
$text =~ s/.*/\//g;
print $text;
输出://
所以,我不知道为什么结果是// 而不是/。
【问题讨论】:
-
.匹配任何字符,*匹配 0 或任何出现的前一个字符。所以.*表示匹配任何东西 -
@bansi 那么为什么它不匹配所有内容?
-
perl -MData::Dumper -e '$text="scott"; $text =~ s/(.*)/print Dumper $1/ge' -
我们可以看到正则表达式引擎在到达字符串末尾时会尝试再匹配一次,但我认为问题是为什么它已经到达字符串末尾时会继续运行.