正则表达式

2019-03-26  本文已影响0人  食梦狸猫

正则表达式是Perl内嵌的一个微型编程语言

使用简单模式

匹配对象是$_内容,那模式本身就是一串简单的字符串序列,把模式写在/中.

$_ = "asda";
if(/asad/)
{...}

Unicode属性

Unicode每个字符除了字节组合外,还有属性信息,除了匹配字符本身,还可根据字符属性来匹配。若要匹配某项属性,只需把属性名放入\p{PROPERTY},例如:

if(/\p{Space}/)
{...}

匹配空白符。

if(/\p{Digit}/)
{...}

匹配数字
将p改为大写表示不匹配

if(/\P{Space}/)
{...}

不匹配空白符

元字符

.可以匹配除了换行符之外任意字符。如果想只是匹配.本身,要加上反斜线转义。

简单量词

"fred\t*ban"

那么能匹配在fred和ban之间包含0次或者无数次制表符的字符串。

.*能匹配任意字符0次到无限次

模式分组

/fred+/
#可以匹配freddddd
/(fred)+/
#可以匹配fredfredfred
/(fred)*/
#可以匹配hello,world

捕获组

通过反向引用来引用圆括号中的模式所匹配的文字。反向引用是在反斜线后面接上数字编号

if(/(.)\1/)
{...}
#匹配连续重复出现的两个字符"aa"

if(/y(....)d\2/)
{...}
#匹配yabccdabccabcc

在Perl5.10后可用\g{N}表示新的反向引用写法。N表示要反向引用的组号。

if(/(.)\g{1}/)
{...}

择一匹配

| 的意思是匹配左边的内容失败了可以匹配右边的内容

/fred(|\t)+barney/
#(|\t)可能匹配空格或者制表符
这就可以匹配两个名字之间至少要有一个空格或制表符

字符集

指一组可能出现的字符,通常写在([])表示匹配字符集中出现的单个字符。

[a-zA-Z]

字符集的简写

表示任意一个数字的字符集简写是\d

/[/d]/

表示任意一个空白符的字符集是\s

/[\s]/ == /[\f\t\n\r]/

\h只匹配水平空白符,\v只匹配垂直空白符
\w匹配单词字符

反义简写

[^\d] == \D
#表示否定意义
上一篇 下一篇

猜你喜欢

热点阅读