+ -
当前位置:首页 → 问答吧 → 正则疑惑,请教

正则疑惑,请教

时间:2010-10-20

来源:互联网

刚刚看了一贴,原文为:
今天看到sed有这样一个功能,比如有一个文本,内容如下:
aa   aa    aa
aa   cc     aa   dd


我只想替换掉第二个,用如下方法:
sed  's/aa/mm/2'  file
结果是:aa    mm    aa
            aa    cc       mm    dd

我用perl -pne 's/$1\s(aa)/mm/' file  可以实现,但是还是不知道为何能够匹配上,请教??多谢

作者: liyangole   发布时间: 2010-10-20

本帖最后由 zhlong8 于 2010-10-20 17:24 编辑

作者: zhlong8   发布时间: 2010-10-20

perl -pe 's/\saa/mm/'
就相当于这样的
把第一个前面有空格的aa换成mm

作者: 99超人   发布时间: 2010-10-20

回复 99超人


    这个也行,但是能给解释一下否 多谢!我的 那个正则为什么也能匹配,能给解释一下吗?多谢!

作者: liyangole   发布时间: 2010-10-20

回复 liyangole


    你那个其实就和我这个一样
$1其实是空值

作者: 99超人   发布时间: 2010-10-20

回复 99超人


    谢了。我明白了。匹配之后才能捕获!

作者: liyangole   发布时间: 2010-10-20

回复 99超人
  1. my $foo = "hello world";

  2. $foo =~ s/\1(l)/kk/;

  3. print $foo
复制代码
\1在匹配前是什么呢?

作者: yybmsrs   发布时间: 2010-10-20