perl正则表达式

Perl正则表达式学习笔记正则表达式

正则表达式以“m”进行匹配,简易模式的能够用“/.../”来撰写模式。可使用m<...>m[],m{}...建议使用简易模式或m{},且m{}可以方便调试。函数

 

元符号学习

在正则表达式中具备特殊意义的符号。测试

.”,通配符,匹配换行符(\n)之外的全部单个字符。只匹配一个字符。spa

反斜线是第二个元字符。调试

在正则表达式中想要使用这些元字符的自己的符号意义,必须在使用前加上反斜线,否则就是特殊意义。内存

量词字符串

星号(*)会匹配它的前一项的0次或屡次。string

加号(+)会匹配它的前一项的1次或屡次。it

问号(?)会匹配它的前一项的0次或1次。

模式组

圆括号也是元符号。将括号内的元素视为一个单独的总体

择一模式

竖线(|)为“或”,表示左边匹配或右边匹配。

字符集

用方括号括起来的一连串可能的字符。只匹配单一字符,但能够是字符集中的任意一个。

字符集简写

0-9   \d

A-Za-z0-9_ \w“以普通字母,数字和下划线组成的word”,\w只是匹配单词里的一个字符,用匹配整个单词,要使用加号修饰符进行。

[\f\t\n\r] 换页,制表,换行,回车以及空格   \s,匹配单一字符,比较常见的用法是/s*来匹配任意数目的空白

[]字符集中“^”表示反义

[^\d]非数字的字符 [\D]

[^\w]非单词的字符 [\W]

[^\s]非空格的字符 [\S]

选项修饰符

/i 进行不区分大小写的模式匹配

/s 匹配任意字符 将模式中的点好所有转换成[\d\D]

/x 加上空白 容许在模式中随意的加上空白

组合选项修饰符

组合使用s,i,x来达到想要的效果

锚点

插入符号(^)是用来标示字符串的开头的锚点,美圆符号是($)是标示字符串的结尾的锚点。

单词的锚点

\b是单词的边界的锚点 用来匹配单词的头尾两端

\B非单词边界锚点

绑定操做符=~

匹配$_只是默认的方式

告诉拿右边的匹配左边的字符串

模式内的内插

匹配变量

圆括号不只具备能够用来表示不一样的分组,还可以启动正则表达式的记忆功能,他的记忆功能是把括号里的模式所实际匹配到的部分字符串暂时记下来,系统会根据括号的多少产生相应的标志变量,格式为$1,$2...若是在引用的时候超出了范围则是undef值。这些值会保存到下次匹配的成功时。

自动匹配变量

系统内置的变量,分别为$`,$&,$',三个的含义分别是前置的字符串,匹配的字符串和后置的字符串。

通用量词

*  {0}

+  {1}

? {01}

优先级

1.括号(最高)

2.量词

3.锚点和序列

4.分隔用的竖线

注:量词在没有括号是只是匹配前面的一个字符

    

模式测试程序

While(<>) {

If (/your patter goes here/) {

    Print "|$`<$&>$'";

}

Else {

    Print "no match!";

}

}

s///进行替换

/g进行全局替换

大小写转换

\U转义字符会将其后的全部字符转换成大写

\L转义字符会将其后的全部字符转换成小写

\E关闭大小写的转换的功能

\l\u只会影响以后的第一个字符

组合使用 \u\L表示所有转小写,但第一个字母大写

split操做符

根据分隔符来拆分一个字符串

用法以下:

   @fields = split /separator/,$string;

注释:split操做符将会以做为分隔符的模式扫过所指定的字符串,而且返回有该分隔符所分隔的一串字段。

Split会保留开头的空字段,但不会保留结尾的空字段

默认空白字符,等于以/\s+/为模式,但会省略开头的空字段。

my @fields = split;#等于split /\s+/,$_;

也可使用空格来代替 split ' ',$String;

Join函数

将字符片断联合成一个字符串。

第一个参数是胶水,是字符串,不是模式,用来作各个字符串之间的粘合剂。

列表上下文中的m//

在列表上下文中使用模式匹配操做符(m//)时,若是模式匹配成功,则其所返回的列表内容是全部的内存变量的内容;若是匹配失败,则会返回空列表。

非贪心的量词

*+都是贪心量词,它们匹配是最大的长度。

*?,+?是非贪心的量词,它们匹配最短的长度。

跨行的模式匹配

^$这两个锚点本来表明整个字符串的头和尾。在模式加上/m修饰符以后,就可让它们也表明换行符。表明的是每行的开头和结尾。

一次更新多个文件

特殊变量$^I

$^I不为空则是加在原文件名的后面产生一个新的文件就是改动原文件的备份文件。若是为空则是在原文件上进行改动。

不具记忆功能的圆括号

有时候咱们会由于内存变量的个数太多而混乱,其实你不须要那么多,有的圆括号只是用来做模式的分组。

(?:内容)这就是不带记忆功能的圆括号。

点号默认不匹配换行符

相关文章
相关标签/搜索