Perl正则表达式的三种形式

开发 架构
Perl正则表达式是Perl语言的一大特色,也是Perl程序中的一点难点,不过如果大家能够很好的掌握他,就可以轻易地用Perl正则表达式来完成字符串处理的任务。

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

Perl正则表达式的三种形式

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

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

替换:s/<pattern>;/<replacement>;/

转化:tr/<pattern>;/<replacemnt>;/

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(<FILE>;){printif(m/error/);}#这一句稍微复杂一些,他将打印FILE文件中所有包含error字符串的行。

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

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

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

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

比如下面的例子:

  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.  
  3. print"请输入一个字符串!\n";  
  4. $string=<STDIN>;;#<STIDN>;代表标准输入,会让使用者输入一字符串  
  5. chop($string);#将$string***一个换行的字符\n删除掉  
  6. if($string=~/perl/){  
  7.   print("输入的字符串中有perl这个字符串!\n";  
  8. }  
  9.  

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

【编辑推荐】

  1. Perl正则表达式的三种形式和八大原则
  2. 解析Perl面向对象编程的两种实现方式
  3. Perl二维数组用法全程剖析
  4. 浅析Perl面向对象编程用法
  5. Perl正则表达式语法解析
责任编辑:佚名 来源: csdn.net
相关推荐

2010-07-19 16:11:20

Perl正则表达式

2010-07-13 17:10:31

Perl正则表达式

2010-07-14 09:55:24

Perl正则表达式

2017-01-05 16:19:12

C++正则表达式

2010-07-19 10:40:16

Perl正则表达式

2010-07-13 17:03:53

Perl正则表达式

2010-07-14 09:01:18

Perl正则表达式

2010-07-14 09:37:46

Perl正则表达式

2010-07-14 09:47:04

Perl正则表达式

2010-07-22 09:12:05

Perl正则表达式

2010-07-14 10:06:55

Perl正则表达式

2010-07-13 16:56:30

Perl正则表达式

2009-09-16 12:41:42

Perl正则表达式

2010-07-19 16:17:17

Perl正则表达式

2018-09-27 15:25:08

正则表达式前端

2010-07-21 10:43:25

Perl正则表达式匹配

2020-09-04 09:16:04

Python正则表达式虚拟机

2010-03-03 12:53:50

Linux正则表达式

2009-06-09 09:00:09

java正则表达式

2010-07-20 16:25:50

Perl正则表达式
点赞
收藏

51CTO技术栈公众号