perl语言正则表达式简介

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

perl语言正则表达式简介

正则表达式(Regular Expression)是指定模式的一种方法,这种模式对文本进行筛选,只匹配特定的字符串。一旦匹配到了一个字符串,就可以从大量的文本中将其抽取出来,或者利用另一个字符串来替代这个字符串。其使用的格式为/pattern/,使用的匹配操作符为:=~(匹配),!~(不匹配)。Perl语言中因为有这个功能,所以对于字符串的处理能力是非常强有力的。

一:常用正则表达式简介:

1.匹配模式和匹配操作符:

正如上面所说,匹配模式为/patter/,匹配操作符:=~(匹配),!~(不匹配)。

例如: if($line =~/^round-trip/)

{……}

2. 模式中的特殊字符:+,* ,?, [],[^], {m}等字符的含义如下:

/pattern/含义:

x?找寻0个或是1个x字符

x*找寻0个或是0个以上的x字符

x+找寻0个或是1个以上的x字符

{m}找寻刚好是m个个数指定的字符

{m,n}找寻在m个数个数以上,n个个数以下指定的字符

[]找寻符合[]内的字符

[^]找寻不符合[]内的字符

[0-9]找寻符合0到9的任何一个字符

[a-z]找寻符合a到z的任何一个字符

[^0-9]找寻不符合0到9的任何一个字符

[^a-z]找寻不符合a到z的任何一个字符

^x找寻字符x开头的字符

$x找寻字符x结尾的字符

a|b|c找到符合a字符或是b字符或是c字符的字符串

abc找到一个含有abc的字符串

\d找寻一个digit(数字)的字符,和[0-9]语法一样

\D找寻一个non-digit(非数字)的字符,和[^0-9]〕语法一样

\w 找寻一个英文字母或是数字的字符,和[a-zA-Z0-9]语法一样

\W找寻一个非英文字母,数字的字符,和[^a-zA-Z0-9]语法一样

\s找寻一个空白的字符

\S 找寻一个非空白的字符

特别的是字符".",它可以匹配除换行外的所有字符,通常与*合用。“.*”表示除换行外得任意个任意字符

下面是一些正则表达式在实际中用到或常用的范例:

范例:说明:

/pe*rl/找到p后面跟着0个或多个e,再跟着rl的字符串,如同/cg{0,1}i/

/pe+rl/找到p后面跟着一个以上e,再跟着rl的字符串,如同/cg{1,}i/

/pe?rl/找到p后面跟着0个或是一个e,再跟着rl的字符串,如同/cg{0,1}i/

/p.rl/找到p后面跟着一个任意字符,再跟着rl的字符串

/p.*rl/找到p后面跟着任意个任意字符,再跟着rl的字符串

/p|r|l/找到含有p或r或l的字符串

/pe{2,4}rl/找到p后面跟着2个到4个e,再跟着rl的字符串

/[perl]/ 找到符合有这四个字符任意一个的字符串

/[^perl]/找到没有这四个字符中任意一个的字符串

/round-trip/找到含有round-trip的字符串

/^round-trip/找到开头是round-trip的字符串

/round-trip$/找到结尾是round-trip的字符串

/^\*/ 找到以*开头的字符串

/ up| down/ 找到以空格up或空格down开头的字符串

/CPU utilization for five seconds.*/ 找到含有" CPU utilization for five seconds加除

换行符外的任意字符"的字符串

/round-trip min\/avg\/max/找到含有“round-trip min/avg/max”的字符串

/^---.*---/ 找到符合含有在以“---”开头,且在“---"间"---"有除换行符

外任何字符的字符串

/\d% packet loss/找寻符合含有"数字% packet loss"的字符串

/^ +\d+/ 找到以一个或多个空格开头并且后接一个或多个数字的字符串/^pamvr.*/ 找到以pamvr开头且后接除换行符外任意字符的字符串

/up.*up/ 找到含有两个up且在它们间有除换行符外任意字符的字符串/^-rw-rw-r--/ 找到以'-rw-rw-r--'开头的字符串

/\d$/ 找到以数字结尾的字符串

/up$/i 找到以up结尾,并且忽略up大小写的字符串

/\d/找寻符合数字的字符串,可以使用/\d+/来表示一个或是多个数值的字符串

/\D/找寻符合不是数字的字符串

/\w/找寻符合英文字母,数字的字符串

/\W/找寻符合非英文字母,数字字符的字符

if ($line =~ /\d+(\\.\\d+)?$/) 匹配非负浮点数

例1:检验变量名的类型:

if ($varname =~ /^\$[A-Za-z][_0-9a-zA-Z]*$/) { #以字符'$'开头的变量 print ("$varname is a legal scalar variable\n");#则为简单变量 } elsif ($varname =~ /^@[A-Za-z][_0-9a-zA-Z]*$/) { #以字符'@'开头的变量 print ("$varname is a legal array variable\n");#则为数组类型变量 } elsif ($varname =~ /^%[A-Za-z][_0-9a-zA-Z]*$/) { #以字符'%'开头的变量

相关文档
最新文档