Perl正则表达式的三种形式

本文和大家重点讨论一下Perl正则表达式的概念,Perl正则表达式是Perl语言的一大特色,也是Perl程序中的一点难点,不过如果大家能够很好的掌握他,就可以轻易地用Perl正则表达式来完成字符串处理的任务,当然在CGI程序设计中就更能得心应手了。下面我们列出一些Perl正则表达式书写时的一些基本语法规则。

Perl正则表达式的三种形式

首先我们应该知道Perl程序中,Perl正则表达式有三种存在形式,他们分别是:

匹配:m/;/(还可以简写为/;/,略去m)

替换:s/;/;/

转化:tr/;/;/

Perl正则表达式的这三种形式一般都和=~或!~搭配使用(其中"=~"表示相匹配,在整条语句中读作does,"!~"表示不匹配,在整条语句中读作doesn't),并在左侧有待处理的标量变量。如果没有该变量和=~!~操作符,则默认为处理$_变量中的内容。举例如下:

$str="IlovePerl";
$str=~m/Perl/;#表示如果在$str中发现"Perl"字符串,则返回"1"否则返回"0"。
$str=~s/Perl/BASH/;#表示将变量$str中的"Perl"字符串替换为"BASH",如果发生此替换则返回"1",否则返回"0"。
$str!~tr/A-Z/a-z/;#表示将变量$str中的所有大写字母转化为小写字母,如果转化发生了则返回"0",否则返回"1"。

另外还有:

foreach(@array){s/a/b/;}#此处每次循环将从@array数组中取出一个元素存放在$_变量中,并对$_进行替换处理。
while(;){printif(m/error/);}#这一句稍微复杂一些,他将打印FILE文件中所有包含error字符串的行。

Perl的Perl正则表达式中如果出现(),则发生匹配或替换后()内的模式被Perl解释器自动依次赋给系统$1,$2......请看下面的例子:

$string="Iloveperl";
$string=~s/(love)/<$1>;/;#此时$1="love",并且该替换的结果是将$string变为"I;perl"
$string="iloveperl";
$string=~s/(i)(.*)(perl)/<$3>;$2<$1>;/;#这里$1="i",$2="love",$3="perl",并且替换后$string变为";love;"

替换操作s/;/;/还可以在末尾加上e或g参数,他们的含义分别为:

s/;/;/g表示把待处理字符串中所有符合;的模式全部替换为;字符串,而不是只替换***个出现的模式。
s/;/;/e表示将把;部分当作一个运算符,这个参数用的不多。

比如下面的例子:

 
 
 
  1. $string="i:love:perl";
  2. $string=~s/:/*/;#此时$string="i*love:perl";
  3. $string="i:love:perl";
  4. $string=~s/:/*/g;#此时$string="i*love*perl";
  5. $string=~tr/*//;#此时$string="iloveperl";
  6. $string="www22cgi44";
  7. $string=~s/(\d+)/$1*2/e;#(/d+)代表$string中的一个或多个数字字符,将这些数字字符执行*2的操作,因此***$string变成了"www44cgi88"。

下面给出一个完整的例子:

 
 
 
  1. #!/usr/bin/perl
  2. print"请输入一个字符串!\n";
  3. $string=;;#;代表标准输入,会让使用者输入一字符串
  4. chop($string);#将$string***一个换行的字符\n删除掉
  5. if($string=~/perl/){
  6.   print("输入的字符串中有perl这个字符串!\n";
  7. }

 如果输入的字符串含有perl这个字符串的话,就会显示后面的提示信息。

本文题目:Perl正则表达式的三种形式
网页路径:http://www.shufengxianlan.com/qtweb/news43/357943.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联