1 / 3
文档名称:

第七章perl正则表达式.docx

格式:docx   大小:13KB   页数:3页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

第七章perl正则表达式.docx

上传人:ATONGMU 2022/7/3 文件大小:13 KB

下载得到文件列表

第七章perl正则表达式.docx

文档介绍

文档介绍:1
正则表达式,在 perl 中常常叫模式,是一个匹配(或不匹配)某字符串的模板
若匹配的对象是$_的内容,只要把模式写在一对正斜线(//)中就可以了
Eg:$_ = “yabba dabba doo”;
if (/abba/)1
正则表达式,在 perl 中常常叫模式,是一个匹配(或不匹配)某字符串的模板
若匹配的对象是$_的内容,只要把模式写在一对正斜线(//)中就可以了
Eg:$_ = “yabba dabba doo”;
if (/abba/){ #表达式/abba/会在$_中寻找这 4 个字符组成的串,有真无假print “It matched!\n”;
}
由于模式匹配通常用来返回真或假值,所以往往在if 或 while 的条件表达式里看到它
所有在双引号圈引的字符串中能使用的技巧(尤其是反斜线转义)都可以在模式串里使用。Eg:/cake\tsprite/
元字符:我们引入一些特殊的字符,在正则表达式中表示特殊的含义
Eg:点号(.)是任何单字符的通配符,当然换行除外
如:/,betsy,bet=y,…,但 bety 或 betsey 就不匹配了注:若想要点号只能匹配句号本身,只需在前面加上反斜线。
在任何元字符前面加上反斜线,就会失去元字符的特殊作用 eg:/3\.14159/无通配

反斜线是我们的第二个元字符,若想要得到真正的反斜线,请用两个反斜线表示
量词:* 重复零次或多次 +号 重复一次或多次 ?重复零次或一次
.*匹配任意字符无限多次 ???P136
圆括号()用来分组 eg:/(fred)+/ /(fred)*/ 什么都能配啊,因为能匹配0 次所以要它匹配失败是很难得
使用圆括号包围的点号可以匹配任意非回车字符(.) Eg:$_ = “abba”;
if (/(.)\1/){ #匹配 bb print “It mached”;
}
$_ = “yabba dabba doo”;
if (/y(….) d\1/){ #匹配y 后面 4 个连续的非回车字符,并且用\1 在 d 字符之后重复这 4 个字符
print “It matched”;
}
$_ = “yabba dabba doo”;
if(/y(.)(.)\2\1/){ #用多个括号来分成多组,每组有自己的反向引用print “It has matched”;
}
注:括号的组只要数左括号就行了
$_ = “yabba dabba doo”; if (/y((.)(.)\3\2) d\1/){
print “It matched”;
}
Perl 中有一种新的反向引用写法,用了\g{N}。其中 N 是想要反向引用的组号。
14. $_ = “aa11bb”;
If (/(.)\111){ #尽可能多的尝试反向引用,so 这里是\111,然而因为没有 111 组括号存在,perl 在程序编译时失败
print “It matched!\n”;
}
可以用\g{1},排除前面模式的二义性
use ;
$_ = “aa11bb”; if (/(.)\g{1}11/){
print “It matched!\n”;