perl 正则表达式整理

^a             以a 为开头

[^a]          非a

apple(|\t+)pear  中间出现一次以上空格,制表符或者两者混合的字符串

apple(+|\t+)pear 中间的分隔符全是空格或者全部制表符

(apple|pear)          

[a|b]

[ab]                     只匹配字符集中列出的任何一个

[^def]                  匹配这三个字符以为的任何字符

[a-z]         匹配a-z 直接的任何字符

[^n-z]       匹配n,-,z 以外的任何字符  

/apple|pear/         择一匹配

$_="aa11bb";

/(.)\111/      perl会匹配 \111

/(.)g{1}11/         g{1} =\1

 

\s        匹配任意空白字符

\R         匹配断行的字符,包括dos,unix 下的 \r\n, \n

\w        单词字符,= [a-zA-Z0-9_]

 

反义简写

\D        =[^\d]  

\W         =[^\w]

\S        =[^\s]

 

/[0-9a-fA-F]/    匹配十六进制数

.          匹配任意一个字符,(除了换行符\n)

[\d\D]      表示任何数字或非数字,即匹配任意字符,包括换行符

[^\d\D]     匹配既不是数字也不是非数字的字符,即什么都不匹配

 

用正则表达式匹配

/fred/           以双斜线为定界符,可以省略开头的m

m%^https://%      不可以省略m

if(/yes/i)         /i 忽略大小写

$_="I have an apple\n and a pear\n ";

if(/apple.*pear/s)   /s 匹配任意字符。.无法匹配换行符,如果字符串中有换行符,希望能匹配到这些换行符,就用/s,他会将模式中的每个点号装换成[\d\D]来处理。

[^\n]          同[\N],匹配任意字符

/ -? [0-9]  /x       同/-?[0-9]]/ , \x 允许加入空白符

m{\Ahttps?://}i      \A, 词首锚定

m{\.png\z}i      \z 绝对词尾锚定,, \Z行尾锚定,允许后面出现换行符

print  /\.png\Z/;

print  "$_\n" if /\.png\z/;

/\A\s*\Z/         匹配空白行

/\bfred\b/       \b 只匹配每组\w字符的开头或者结尾,可匹配fred

/\bsearch\B/      匹配searches,searching,但不能匹配search, researching. \B 匹配所有\b不能匹配的位置

 

$string = "i:love:perl";

$string =~ s/:/*/; #此时 $string="i*love:perl";

$string = "i:love:perl";

$string =~ s/:/*/g; #此时 $string="i*love*perl";

$string =~ tr/*/ /; #此时 $string="i love perl";

$string = "www22cgi44";

$string =~ s/(\d+)/$1*2/e; # (/d+)代表 $string 中的一个或多个数字字符,将这些数字字符执行 *2 的操作,因此最后 $string 变成了 "www44cgi88"。

posted @ 2017-04-26 14:22  白鸟li  阅读(1199)  评论(0编辑  收藏  举报