【发布时间】:2009-08-24 17:12:12
【问题描述】:
为什么第一个打印语句没有输出我所期望的:
first = This is a test string, sec = This is a test string
既然 * 和 + 都是贪婪的,为什么内部 * 即第一个匹配中的 "((" 内部没有消耗整个字符串?
use strict;
use warnings;
my $string = "This is a test string";
$string =~ /((.*)*)/;
print "first = $1, sec = $2\n"; #prints "first = This is a test string, sec ="
$string =~ /((.+)*)/;
print "first = $1, sec = $2\n"; #prints "first = This is a test string, sec = This is a test string"
【问题讨论】:
-
更好的问题是“你为什么这样做?” :) 这仅仅是因为您对这种奇怪的边缘情况感到好奇,还是您想实际使用它?
-
布莱恩,我只是好奇。 :-)