【初学小骆驼】漫游正则表达式王国

正则表达式是一个匹配某字符串的模板

Unix的grep命令检查哪些行文本匹配指定的模式。example,某个文件哪一行提到了flint,并且同一行内还跟着stone,可以用$ grep 'flint.*stone' chapter*.txt

             chapter3.txt:……………………

             chapter3.txt:……………………

             chapter9.txt:……………………

写法example,

             $_ = "yabba dabba doo";

             if(/abba/) {

             print "It matched!\n";

             }

表达式/abba/会在$_中寻找这四个字符组成的串,找到了就返回真,不然是假。

 

元字符

点号.  是任何单字符的通配符(换行符除外)。

example,

/bet.y/匹配betty、betsy、bet=y。不匹配bety或betsey。  假如希望.只匹配它本身,就\.

 

星号*  匹配前面的内容重复零次或多次。

example,

/fred\t*barney/匹配fred和barney之间任意多个制表符。

 

.*  匹配任意字符无限多次,捡破烂模式。

 

加号+  匹配前一个条目一次以上。

example,

/fred +barney/匹配fred和barney之间有一个以上空格的字符串。除空格外不可有其他字符。

 

问号?  表示前一个条目可有可无,即前一个条目可以出现一次或不出现。[0,1]。

 

圆括号()  用来分组。

example,

/fred+/匹配像freddddddddd

/(fred)+/匹配像fredfredfred

/(fred)*/匹配像Hello, world

 

圆括号和反向引用  \1、\2斜线后面的数字和括号的组号匹配。

example,

/(.)\1/匹配重复一次的字符串,aa、bb、cc、dd……

/y(....)d\1/匹配y后面四个连续的字符,再跟一个d,然后再重复这四个字符。

/(.)(.)\2\1/匹配类似abba、dnnd这样的回文模式。

/y((.)(.)\3\2) d\1/匹配类似yabba dabba这样的。

 

于是perl 5.10里运用新的反向写法\g{N}  N是想要反向引用的组号

example,

/(.)\g{1}11/匹配aa11、bb11这样的。

甚至可以用负数/(.)(.)\g{-1}11/匹配?

 

择一匹配--竖线|  匹配左边或右边都行。

example,

/fred( |\t)+barney/匹配fred和barney之间空格、制表符或两者组合出现一次以上的字符串。

 

字符集

方括号[]  它匹配字符集列出的的任何一个单个字符。

经典字符集[a-zA-Z]      [\000-\177]匹配任何7位ASCII字符。

脱字符^  表示这些字符除外。 [^def]匹配除这三个字符以外的任何字符。

HAL模式/HAL-[0-9]+/

 

简写

\d  代表任意数字的字符集[0-9]

/HAL-\d+/  代表HAL模式/HAL-[0-9]+/

\w  表示单词字符,匹配单词字符集里的一个字符。

/fred \w+ barney/匹配fred、一个空格、一个单词、一个空格和barney。

\s  处理空白。\s*匹配任意数目的空白,\s+匹配一个以上的空白字符。

/[\dA-Fa-f]+/匹配十六进制字符

[\d\D]表示任何数字或非数字,即匹配任何字符!

[^\d\D]什么都不匹配

 

perl 5.10 增加了许多:

\h  匹配横向空白

\v  匹配纵向空格

\R  匹配任意类型的断行

转载于:https://www.cnblogs.com/amamiyaryou/archive/2012/06/21/2557534.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值