Chinaunix

标题: 请教,关于PERL的正则表达式 [打印本页]

作者: slwj    时间: 2014-05-23 21:56
标题: 请教,关于PERL的正则表达式
大家好,在阅读下面文档
http://blog.csdn.net/hiccupzhu/article/details/8930056
,关于PERL的正则表达式,文档提到一个例子:

正则表达式匹配一个给定模式的最早的可能匹配。缺省时,仅匹配或替换正则表达式一次( $a = 'string string2'; $a =~ s/string/ /; 导致 $a = 'string 2')。

,按照我的理解,
$a = 'string string2';
$a =~ s/string/ /;
,其结果应该是' string2'才对,如果结果是'string 2',它应该是从右向左计算,实际是这样吗,多谢!
作者: b4and5    时间: 2014-05-24 10:26
回复 1# slwj
  1. $a =~ s/string/ /;
复制代码
的意思是把第一个匹配到的string替换为空,那就只剩下了string2,所以匹配到的是左边的string.
作者: dacheng58    时间: 2014-05-24 11:25
应该是左边的吧,一般应该是' string2'
至于是不是平台不同?有变量控制?包含了模块?之类,导致默认情况下替换右边的?就不知道了
作者: slwj    时间: 2014-05-24 12:07
怎么能有一个可以模拟运行PERL的环境?
作者: b4and5    时间: 2014-05-24 12:54
你用变量捕获就知道他到底匹配到的是什么了
  1. my $test = "string1 string2";
  2. $test =~ /(string\d)/ ;
  3. print $1;
复制代码

作者: 104359176    时间: 2014-05-25 20:35
  1. use 5.010;

  2. my $str = 'string string2';
  3. $str =~ s/string/ /;
  4. say "<$str>";
复制代码
  1. $ perl spp.pl
  2. <  string2>
复制代码

作者: ntwarren    时间: 2014-05-26 10:01
你在这里发这个贴子,还不如自己运行一下省时,我运行的结果是" string2"
作者: stanley_tam    时间: 2014-05-26 10:31
同意楼上的,我的结果是
  1. $a => [  string2]
复制代码

作者: slwj    时间: 2014-05-28 20:34
stanley_tam 发表于 2014-05-26 10:31
同意楼上的,我的结果是


多谢了!

顺便问下,可以在Windows下建立一个PERL的运行环境么,多谢!
作者: stanley_tam    时间: 2014-05-28 20:57
什么意思,在windows上运行per?l回复 9# slwj


   




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