《Perl编程24学时教程》笔记第6课 perl的模式匹配

发布时间:2020-03-07编辑:脚本学堂
本文分享《Perl编程24学时教程》笔记第6课时的内容,介绍下 perl的模式匹配,有需要的朋友参考下。

第6课时  模式匹配

更多信息参考perlre文档。

一、简单的模式
m/$var/,模式在变量$_中找到,匹配运算符返回真,使用/做界限府可以不用m来编写匹配代码。
元字符是改变模式匹配运行特性的字符,元字符列表:^,$,(),,|,@,[],{},?,.,+,*。
匹配元字符时需要进行转义。
匹配的规则:从左开始,整个模式匹配成功才是成功,进行最大字符数量的匹配。

二、元字符
1.简单的元字符
圆点(.)用于匹配除换行符外的任何单个字符

2.非输出字符
普通字符加上反斜线变成元字符的有n(换行符),r(回车符),t(制表符),f(换页符)。

3.通配符
+使前面的字符至少匹配一次。
*使前面的字符进行0次或多次匹配。
?使前面的字符进行0次或一次匹配(不能超过一次)。
{n,m}用于指定匹配的次数,n是匹配的最小次数,省略n则最小匹配次数是0,m是匹配的最大次数,省略m则最大匹配次数不限,n和m不能同时省略。

4.字符类
[]用来定义字符类,字符类中的所有字符被视为单个字符。
^作为字符类中的第一个字符,使字符类取反。
],^,-是字符类中的特殊字符,使用反斜杠屏蔽其特殊意义。
特殊字符类
 

模式          匹配
w           一个单词字符
W           一个非单词字符
d           一个数字
D           一个非数字
s           一个空白字符,与[tfrn]相同
S           一个非空白字符

5.分组和选择
|用于列出可以选择的字符类。
()用于将模式的各个部分组合起来。

6.位置通配符
正则表达式开头插入^记号,只匹配一行开头的字符。
正则表达式结尾插入$记号,只匹配一行结尾的字符。

三、替换
s/searchpattern/replacement/运算符找出searchpattern,并用replacement替换,若没有进行任何匹配,返回0。
界限符(/)的使用方法与匹配运算符相同。

四、模式匹配的其他问题
1.对其他变量进行操作
=~连接运算符,对非$_的变量使用匹配运算符和替换运算符,必须将其与该变量连接起来,该运算符不进行赋值,只是取出右边的运算符,并对左边的变量进行操作。

2.修饰符与多次匹配
修饰符i,在替换运算符s///和匹配运算符m//后,可以使替换和匹配忽略大小写。
修饰符g,在替换运算符s///和匹配运算符m//后,可以使替换和匹配重复进行。

3.反向引用
将括号用于正则表达式中,每个带括号的表达式匹配的目标字符串将被依次记录到一组特殊的变量$1,$2...。

4.grep函数
grep expression,list
grep block,list
grep函数迭代运行list中的每个元素,执行expression或block。
map函数的句法与grep函数基本相同,不同的是返回值是由map返回的,而不是$_。