第六章 正则表达式
1、 正则表达式(regular expression)在Perl里通常称为模式(parrern),是一个“匹配”或“不匹配”特定字符串的模板,它是一种小程序,有自己的简单编程语言;正则表达式与shell的“文件名匹配模式(glob)”不是同一个概念;
2、 元字符(metacharacter)即是在正则表达式中有特殊意义的字符,若要元字符表现为它原来的形式,需要用到转义符;常见的元字符如:
a) . (点号) 匹配除换行符(/n)以外的所有单字符;
b) [ ]
c) ( ) (一组圆括号) 用来对模式进行分组;
3、 在一个模式中可以指定某个或某些(用圆括号分组中子表达式)字符的重复出现的次数,具有此功能的特殊字符(量词)常见的有:
a) * (星号) 重复匹配它之前的一个项目0次或多次;相当于{0,}
b) + (加号) 重复匹配它之前的一个项目1次或多次;相当于{1,}
c) ? (问号) 重复匹配它之前的一个项目0次或1次;相当于{0,1}
d) {n} 重复匹配它之前的一个项目n次(精确值);
e) {m,n} 重复匹配它之前的一个项目最少m次,最多n次;
f) {m,} 重复匹配它之前的一个项目最少m次
g) {,n} 重复匹配它之前的一个项目最多n次;
4、 在进行模式匹配时,可以同时指定几种规则(彼此间用“|”隔开),而这其中只要有一种模式匹配成功就返回成功匹配,这种方式叫择一匹配,也可以称作分枝条件;匹配顺序由左至右,只要有一个模式匹配成功,就不再测试其后的模式;
5、 可以用一组方括号“[ ]”括起一连串字符来表示单字符匹配时的匹配范围,这个范围称作字符集(character class);可以使用连字符“-”来指定某个范围的字符,此时如果用到连字符本身,则需要进行转义;字符集只是完整模式的一部分,不会单独出现;也可以使用“^”对字符集取反,表示方法为 “[^排除的字符集]”;常用的字符集也有简写形式,如:
a) /w 匹配单个字母、数字、下划线或汉字等(word);
b) /W 匹配(/w)以外的所有单个字符(word);
c) /d 匹配任意单个数字,即[0-9];
d) /D 匹配数字字符以外的任何字符;于是[/d/D]表示任何数字或字符;
e) /s 匹配任意的空白字符,它相当于[/f/t/n/r ],即换页、制表、换行、回车和空格;
/S 匹配任意非空白字符,相当于[^/s];