欢迎来到天天文库
浏览记录
ID:15329951
大小:69.00 KB
页数:7页
时间:2018-08-02
《perl 中的正则表达式》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、Perl中的正则表达式9 Perl中的正则表达式·正则表达式的三种形式·正则表达式中的常用模式·正则表达式的8大原则 正则表达式是Perl语言的一大特色,也是Perl程序中的一点难点,不过如果大家能够很好的掌握他,就可以轻易地用正则表达式来完成字符串处理的任务,当然在CGI程序设计中就更能得心应手了。下面我们列出一些正则表达式书写时的一些基本语法规则。9.1正则表达式的三种形式首先我们应该知道Perl程序中,正则表达式有三种存在形式,他们分别是:匹配:m//(还可以简写为//,略去m)替换:s///
2、转化:tr///这三种形式一般都和=~或!~搭配使用(其中"=~"表示相匹配,在整条语句中读作does,"!~"表示不匹配,在整条语句中读作doesn't),并在左侧有待处理的标量变量。如果没有该变量和=~!~操作符,则默认为处理$_变量中的内容。举例如下:$str="IlovePerl";$str=~m/Perl/;#表示如果在$str中发现"Perl"字符串,则返回"1"否则返回"0"。$str=~s/Perl/BASH/;#表示将变量$str中的"Perl"字符串替换为"BASH",如果发生此替换则返回"1",否则返回"0"。$str!~tr
3、/A-Z/a-z/;#表示将变量$str中的所有大写字母转化为小写字母,如果转化发生了则返回"0",否则返回"1"。另外还有:foreach(@array){s/a/b/;}#此处每次循环将从@array数组中取出一个元素存放在$_变量中,并对$_进行替换处理。while(){printif(m/error/);}#这一句稍微复杂一些,他将打印FILE文件中所有包含error字符串的行。Perl的正则表达式中如果出现(),则发生匹配或替换后()内的模式被Perl解释器自动依次赋给系统$1,$2......请看下面的例子:$string="Iloveperl";$string=~
4、s/(love)/<$1>/;#此时$1="love",并且该替换的结果是将$string变为"Iperl"$string="iloveperl";$string=~s/(i)(.*)(perl)/<$3>$2<$1>/;#这里$1="i",$2="love",$3="perl",并且替换后$string变为"love"替换操作s///还可以在末尾加上e或g参数,他们的含义分别为:s///g表示把待处理字符串中所有符合的模式全部替换为5、t>字符串,而不是只替换第一个出现的模式。s///e表示将把部分当作一个运算符,这个参数用的不多。比如下面的例子:$string="i:love:perl";$string=~s/:/*/;#此时$string="i*love:perl";$string="i:love:perl";$string=~s/:/*/g;#此时$string="i*love*perl";$string=~tr/*//;#此时$string="iloveperl";$string="www22cgi44";$string=~s/(d+)/$16、*2/e;#(/d+)代表$string中的一个或多个数字字符,将这些数字字符执行*2的操作,因此最后$string变成了"www44cgi88"。下面给出一个完整的例子:#!/usr/bin/perlprint"请输入一个字符串!";$string=;#代表标准输入,会让使用者输入一字符串chop($string);#将$string最后一个换行的字符删除掉if($string=~/perl/){ print("输入的字符串中有perl这个字符串!";}如果输入的字符串含有perl这个字符串的话,就会显示后面的提示信息。 9.2正则表达式中的常用7、模式下面是正则表达式中的一些常用模式。/pattern/结果.匹配除换行符以外的所有字符x?匹配0次或一次x字符串x*匹配0次或多次x字符串,但匹配可能的最少次数x+匹配1次或多次x字符串,但匹配可能的最少次数.*匹配0次或一次的任何字符.+匹配1次或多次的任何字符{m}匹配刚好是m个的指定字符串{m,n}匹配在m个以上n个以下的指定字符串{m,}匹配m个以上的指定字符串[]匹配符合[]内的字符[^]匹配不符合[]内的字
5、t>字符串,而不是只替换第一个出现的模式。s///e表示将把部分当作一个运算符,这个参数用的不多。比如下面的例子:$string="i:love:perl";$string=~s/:/*/;#此时$string="i*love:perl";$string="i:love:perl";$string=~s/:/*/g;#此时$string="i*love*perl";$string=~tr/*//;#此时$string="iloveperl";$string="www22cgi44";$string=~s/(d+)/$1
6、*2/e;#(/d+)代表$string中的一个或多个数字字符,将这些数字字符执行*2的操作,因此最后$string变成了"www44cgi88"。下面给出一个完整的例子:#!/usr/bin/perlprint"请输入一个字符串!";$string=;#代表标准输入,会让使用者输入一字符串chop($string);#将$string最后一个换行的字符删除掉if($string=~/perl/){ print("输入的字符串中有perl这个字符串!";}如果输入的字符串含有perl这个字符串的话,就会显示后面的提示信息。 9.2正则表达式中的常用
7、模式下面是正则表达式中的一些常用模式。/pattern/结果.匹配除换行符以外的所有字符x?匹配0次或一次x字符串x*匹配0次或多次x字符串,但匹配可能的最少次数x+匹配1次或多次x字符串,但匹配可能的最少次数.*匹配0次或一次的任何字符.+匹配1次或多次的任何字符{m}匹配刚好是m个的指定字符串{m,n}匹配在m个以上n个以下的指定字符串{m,}匹配m个以上的指定字符串[]匹配符合[]内的字符[^]匹配不符合[]内的字
此文档下载收益归作者所有