Perl中的模式匹配详解

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

perl中的模式匹配

俞昊然

俞昊然

发表于2016-05-10 19:57:29

内容来源:网络

perl模式匹配常采用m/target/的形式,其中target为需要匹配的字符串。如果不显示指明,则perl常常在$_中进行匹配。

模式匹配运算符常常用m//代替,也可以用(m,target)代替。

如果匹配的字符串中含有元字符,则需要在前面加上/。

--------------------------------------------------------------------------------------------------------------------------------

perl正则表达式匹配的规则:

1通常情况下,模式匹配从目标字符串的左边开始,然后逐步向右边进行匹配。

2如果并且只有当整个模式能够用于与目标字符串相匹配时,模式匹配才返回真(在任何上下文中均如此)。

3目标字符串中第一个能够匹配的字符串首先进行匹配。正则表达式不会漏掉某一个能够

匹配的字符串,而去寻找另一个更远的字符串来进行匹配。

4进行第一次最大字符数量的匹配。你的正则表达式可能迅速找到一个匹配的模式,然后

设法尽可能延伸能够匹配的字符范围。正则表达式是“贪婪的”,也就是说,它会尽可

能多地寻找能够匹配的字符。

---------------------------------------------------------------------------------------------------------------------------------

元字符介绍:

圆点.:在正则表达式中,圆点用于匹配除了换行符外的任何单个字。要求存在一个字符,但是不能有更多的字符。如在模式/p.t/用于匹配pot、pat、pit、carpet等

通配符+:+用于使前面的字符与后面的字符至少匹配一次,也可以任意次地进行匹配,并且仍然拥有匹配的表达式。例如/do+g/能同时匹配hounddog,hotdog,doogiehowser,doooooogdoog等

通配符*:元字符*使得前面的字符可以进行0次或多次匹配。

元字符?:元字符?用于使前面的字符进行0次或一次匹配(但是不能超过一次)。注意是前面的字符。模式/c?ola/用于对c进行匹配,如果c存在的话。然后对o、l和a进行匹配。通配符{}:花括号的格式如下:pat{n, m},这里的n是匹配的最小次数,m是匹配的最大次数,pat是你试图量化匹配的字符或字符组。可以省略n,也可以省略m,但是不能同时省略n和m。

例子:/ x { 5,10}/ x至少出现5次,但是不超过10次。

/ x { 9,} / x至少出现9次,也可能出现更多次。

/ x { 0,4 } / x最多出现4次,也可能根本不出现。

/ x { 8 } / x必须正好出现8次,不能多,也不能少。

通配符 .*:可以用它来匹配任何东西,通常是你感兴趣的其他两样东西之间的任何东西。例如/first.*last/,这个模式设法匹配单词first,再匹配它后面的任何东西,然后匹配单词last。

字符类

----------------------------------------------------------------------------------------------------------------------------------

字符类说明

[ a b c d e ] 用于匹配a、b、c、d或e中的任何一个字符

[ a - e ] 与上面相同。用于匹配a、b、c、d或e中的任何一个字符

G 用于匹配大写字母G或小写字母g

[ 0 - 9 ] 用于匹配一个数字

[ 0 - 9 ] + 用于顺序匹配一个或多个数字

[ A - Z a - z ] { 5 } 用于匹配任何一组5个字母字符

[ *!@# $ % & ( ) ] 用于匹配这些符号中的任何一个

-----------------------------------------------------------------------------------------------------------------------------------

记号(^):该字符类可以匹配不在该字符类中的任何单个字符。

特殊字符类:

-----------------------------------------------------------------------------------------------------------------------------------

模式用于匹配

/ w 一个单词字符,与[ a - z A - z 0 - 9 ]相同

/ W 一个非单词字符(与/ w相反)

/ d 一个数字,与[ 0 - 9 ]相同

/ D 一个非数字

/ s 一个白空间字符,与[ / t / f / r / n ]相同

/ S 一个非白空间字符

------------------------------------------------------------------------------------------------------------------------------------

分组和选择和位置通配符:

()表示分组。

| 表示选择。

位置通配符:

第一个位置通配符是插入记号(^)。正则表达式开头的插入记号告诉正则表达式只匹配一行开头的字符。

是美元符号($)。正则表达式结尾处的美元符号能够使模式只匹配一行结尾的字符。

特别注意:记号(^)由2种用法,区别如下:

字符匹配的时候,通常是在[]里内容的前面加^符号,表示该字符类可以匹配不在该字符类中的任何单个字符,也就是匹配非该字符的意思。

位置匹配的时候,通常是在//中内容的前面加^符号,表示只匹配以正则表达式开头的行。例子:

相关文档
最新文档