Chinaunix

标题: 求助小白问题 [打印本页]

作者: 搬砖工作者    时间: 2011-11-26 16:59
标题: 求助小白问题
$_ = "fred xxxxxxx barney";
$_=~s/x*//;

为什么 匹配不到xxxx啊
*不是贪婪吗
为啥不会匹配到啊
作者: trbing-pb    时间: 2011-11-26 17:12
$_ = "fred xxxxxxx barney";
$_=~s/x*//g;
print $_."\n";
作者: Perlvim    时间: 2011-11-27 00:18
匹配是用 m// s///是替換。* 号匹配任意的值,+ 号才匹配前面重复的值

你想捕获匹配的值:

my $text = "fred xxxxxxx barney";
$text =~ m/(x+)/;
print $1;
作者: yybmsrs    时间: 2011-11-28 10:05
s/ x*/ /;
作者: afukada    时间: 2011-11-28 10:55
*的意義等同於{0,}

也就是說可以出現0次

所以樓主原來的代碼在一開始比對的時候就會比對到

原因是可以比對0次

可以嘗試這個表示式: $_=~s/x*/ /;

你會發現結果是: " fred xxxxxxx barney"
                      ^這裡多了一個空白
也就是說他在一開始就比對成功

所以就結束了




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2