Perl语言学习笔记 7 正则表达式

1、正则表达式匹配的是一个模式,只分为匹配和不匹配两种。

2、如果模式匹配对象是“$_”,只用把模式写在/ /之间即可,如:/abc/

3、元字符:.

点号是任何单字符的通配符,换行(\n)除外
4、量词

*:表示0到无穷次

+:表示1到无穷次

5、圆括号

用来分组,支持反向引用\1、\2,如:/(.)\1/

perl 5.10支持新的反向引用:\g{N}#N可用负数表示相对位置

6、择一匹配:|

如:(a|b)

7、字符集[],如:[A-Za-z]

简写:\d:数字;

\w:单词(字母、数字、下划线);

\s:换行、分页、制表、回车、空格(\n\f\t\r )

\h:匹配横向空白,[\t ]

\v:匹配纵向的空格,等效于 [\f\n\r]

\R:匹配任何类型的断行

8、反义简写

\D、\W、\S:匹配相应小写版本以外的字符

[\d\D]:表示任何数字和非数字,可以匹配任何字符

9、模式匹配操作符的写法

m//、m{}、m()、m<>、m%%等

使用不同的定界符可以提高代码可读性:/^http::\/\// = m%^http://%

10、可选修饰符(可以组合使用,如:m{}isx)

/i:大小写无关的匹配

/s:匹配任意字符,使 . 匹配换行符

/x:可以在模式中加入任意空白和注释

11、锚位

^:开始锚位,标识一个字符串的开头

$:结束锚位,标识一个字符串的结尾

\b:单词边界锚位,用于匹配任何单词的首尾,可以单独使用

12、绑定操作符

默认匹配的是 $_ ,绑定操作符可以指定要匹配的字符串,如:$word =~ /abc/

13、模式串中的内插

如:$what = "larry";    if(/{$what}*/){}

14、捕获变量

正则表达式处理的结果可以被捕获,每个括号都被捕获,依次为:$1、$2、$3

捕获变量的有效期到下次成功捕获新的变量为止。

不捕获模式:(?:abc)

命名捕捉:(?<LABEL>PATTERN),如:m/(?<name1>\w+)(and|or)(?<name2>\w+)/;在5.10版本之后可以使用,反向引用可以改为:\g{LABEL}

自动匹配变量:$`、$&、$':依次为匹配字符串之前的内容、匹配字符串、匹配字符串之后的内容

15、通用量词

{}:括号内指定重复的次数,如:(a{3,15})、(a{5,})

16、优先级

圆括号:()、量词:*/+/?/{m,n}、锚位和序列:^/$、择一:|、元素:a/[abc]/\d/\l

17、模式测试程序

while(<>){

chomp;

if(/YOUR_PATTERN/){

print "Matched: |$`<$&>$'|\n";

}else{

print "no matched\n";

}

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章