您的位置:首页 >> Web开发 >> CGI技术 >> 正文
CGI技术 RSS
 

PERL下的正则表达式

http://www.rdxx.com 07年10月09日 00:00 我要投稿

标签: 正则表达式 , Perl , , 正则
 

m将待匹配串视为多行
o仅赋值一次
s将待匹配串视为单行
x忽略模式中的空白

注:e选项把替换部分的字符串看作表达式,在替换之前先计算其值,如:
$string="0abc1";
$string=~s/[a-zA-Z] /$&x2/e;#now$string="0abcabc1"
六、翻译操作符
这是另一种替换方式,语法如:tr/string1/string2/。同样,string2为替换部分,但其效果是把string1中的第一个字符替换为string2中的第一个字符,把string1中的第二个字符替换为string2中的第二个字符,依此类推。如:
$string="abcdefghicba";
$string=~tr/abc/def/;#nowstring="defdefghifed"
当string1比string2长时,其多余字符替换为string2的最后一个字符;当string1中同一个字符出现多次时,将使用第一个替换字符。
翻译操作符的选项如下:

选项描述
c翻译所有未指定字符
d删除所有指定字符
s把多个相同的输出字符缩成一个

如$string=~tr/\d//c;把所有非数字字符替换为空格。$string=~tr/\t//d;删除tab和空格;$string=~tr/0-9//cs;把数字间的其它字符替换为一个空格。

七、扩展模式匹配
PERL支持PERL4和标准UNIX模式匹配操作所没有的一些模式匹配能力。其语法为:(?pattern),其中c是一个字符,pattern是起作用的模式或子模式。
1、不存贮括号内的匹配内容
在PERL的模式中,括号内的子模式将存贮在内存中,此功能即取消存贮该括号内的匹配内容,如/(?:a|b|c)(d|e)f\1/中的\1表示已匹配的d或e,而不是a或b或c。
2、内嵌模式选项
通常模式选项置于其后,有四个选项:i、m、s、x可以内嵌使用,语法为:/(?option)pattern/,等价于/pattern/option。
3、肯定的和否定的预见匹配
肯定的预见匹配语法为/pattern(?=string)/,其意义为匹配后面为string的模式,相反的,(?!string)意义为匹配后面非string的模式,如:
$string="25abc8";
$string=~/abc(?=[0-9])/;
$matched=$&;#$&为已匹配的模式,此处为abc,而不是abc8
4、模式注释
PERL5中可以在模式中用?#来加注释,如:
if($string=~/(?i)[a-z]{2,3}(?#matchtwoorthreealphabeticcharacters)/{
...
}

9 7 3 1 2 3 4 8 :


 
 
打印本文
 
 
  热点搜索
 
 
 



Valid XHTML 1.0 Transitional
Copyright ©2005 - 2008 Rdxx.Com,All Rights Reserved
收藏本页
收藏本站