perl-five(2018-05-26)

第七章 漫游正则表达式王国

正则表达式是perl内嵌的,自成一体的微型编程语言。

也会出现在sed、grep、awk中。

1、什么是正则表达式

在perl中通常也叫模式,是用来表示匹配(或不匹配)某个字符串的特征模板;

简单来说,正则表达式就是查看一个字符串,然后看它匹配还是不匹配;

另一个用到正则表达式的就是linux中的grep命令;

不要把正则表达式和shell中的文件名匹配模式混为一谈,(必须用单引号将正则表达式括起来,不然会被当做shell当做文件名通配)

2、使用简单模式

如果模式匹配的对象是$_的内容,只要把模式写在一对斜线里面就行了,而模式本身就是一串简单的字符序列。

模式匹配通常会用来返回真值或者假值,所以往往会在if或者while的条件表达式里面。

3、unicode属性

例,许多字符属于空白符,属性名为space,使用\p {space}

        如果匹配数字,那么就用digit属性。

4、关于元字符

如果模式只能匹配简单的直接量字符串,那实际没有太大用处,所以引入特殊字符,成为元字符。

例如:. 是能匹配任意一个字符的通配符。换行符除外,

在任何元字符前面加上反斜线,就会失去元字符的特殊作用。

因此,反斜线是第二个元字符。

5、简单的量词

在某个模式中重复某些东西:星号(*)正是用来匹配前面的条目零次或多次。

使用点号(.)可以匹配任意字符

使用(.*)会匹配到任意字符零次或无限多次。(戏称“捡破烂”模式,因为它能匹配到字符串中的任何东西)

第一个量词:星号是一种量词,其指定了前一个条目的数量;

第二个量词:除此之外,加号(+)也是一种量词,其会匹配前一个条目一次以上,/fred+barney/会匹配再其之间用空格隔开而且只能用空格隔开的字符串。加号表示在这个之间必须有一个以上的空格。

第三个量词:?表示前一个条目可有可无,意思是前一个条目出现一次或者压根不出现。

6、模式分组

在正则表达式中,圆括号作用是对字符串分组,圆括号也是元字符:例如,/fred+/会匹配fredddddd这样的字符,不会是自己想要的,那么/(fred)+/会匹配到fredfredfred这种字符,/(fred)*/这种会匹配到hello,world这种字符。

    原文作者:简单点lili
    原文地址: https://www.jianshu.com/p/84fe732517b1
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞