微信号:grzlwx

介绍:光荣之路官方资讯

闲聊正则表达式

2015-09-13 22:33 光荣之路


  这篇是跟大家没事聊聊正则表达式而已,可不要拿这个当学习教材啊!——如果看着舒服,那么给Me推荐一下。

正则是什么玩意?

  其实这个东西就是一个文本处理工具。记住只是一个“工具”而已,不要想的太复杂。

  对于这玩意,能用就用,不能用,咱们就不用他,换个称手的家伙。跟杀人一个道理,如果觉得枪不好用,那你就用锄头,或者刀子。

正则从哪入手?

  如果你想了解一个人身体结构,很简单:拿刀子把身体解剖开,就知道里面都有什么了?无怪乎肉、骨头,还有水。

  现在我们把正则剖开来看,发现也就是“元字符”和“普通文本字符”组成了正则。怎么玩好正则?就看你怎么拼装这些字符了。

注意了,既然正则是由字符构成,那我们就要养成用字符理解正则的习惯。


举个例子:

  你是怎么理解^chuanshanjia的?

  我想你肯是这样理解的:匹配以chuanshanjia开头的行。——这么组织语言,让脑袋转了几下,费脑子。

  而字符理解是:先匹配一个行开头^,紧接着是c、h、u、a、n、s、h、a、n、j、i、a字符的行。——脑子不用转,挨着往下看就行了。

行的起始和结束

  上面我举了个^chuanshanjia的例子,里面的^这个就表示行的起始。

  现在具体来说说:

  ^(脱字符号),代表一行的行首。记住这个符号代表的是行文本中的一个位置。——只是位置而已。

  用“脱”这个字?搞不明白,难道在一个字符的前面放这么一个符号,就表示后面的字符要脱什么东西了?——你可以这么理解,做那事的时候,首先得把衣服脱了,要不然,你们怎么开始?^_^



  $(美元符号),代表一行的行尾。理解了^,这个自然好理解了。也仅仅表示文本行的位置。——干完事记着付钱啊,而且要给美元($)!^_^

注意了:脱字符和美元符,它们匹配的是一个位置,而不是什么具体的文本字符。

字符组

  现在幻想一下:如果你是选美比赛的评委,现在有美女,编号是:A、B、C、D、E、F......。你看上了其中几个美女,想潜规则她们,那么你就会拿出一张小纸条,上面写上A、E、C。然后让手底下的人,去把这几个美女带上来。然后后面的事你就想吧......

字符组就相当于你拿出的那张小纸条。它的功能就是把你想要的字符放到里面。我们把这个小纸条用“【】”表示。

现在给你写个例子:

  我准备了一张美女名单表(meinv.txt):

美女如下:
    number:A 身高:170cm 年龄:20 
    number:B 身高:180cm 年龄:22 
    number:C 身高:172cm 年龄:23 
    number:D 身高:179cm 年龄:18 
    number:E 身高:171cm 年龄:30 
    number:F 身高:173cm 年龄:23 
    number:G 身高:190cm 年龄:22

看好了,我要潜规则了!暂且让egrep当你的手下吧。

 
            
 
            
 
            
 
           
 
           
 
           
 
           
 
           
 
           
 
           
 
           
 
           
 
           
zhoubaochuan@baochuan:~/workspace/shell$ egrep 'number:[AEC]' meinv.txt 
    number:A 身高:170cm 年龄:20
    number:C 身高:172cm 年龄:23
    number:E 身高:171cm 年龄:30

是不是得到了你想要的美女了?只要把美女的编号写到小纸条(【】)里,egrep就把你要的美女给你送上来了。

字符组的元字符

  现在幻想一下,你是个极其懒惰的家伙。 你不想亲自去挑你想要的美女?你只想把比赛的前四名潜规则了。而现在很走运,其中编号是B、C、D、E四个美女获得了前四名。现在你又把你的小纸条拿出来了,直接在上面写个范围,你的手下(egrep)就把这几个美女给你送上来了。

 
            
 
            
 
            
 
           
 
           
 
           
 
           
 
           
 
           
 
           
 
           
 
           
 
           
zhoubaochuan@baochuan:~/workspace/shell$ egrep 'number:[B-E]' meinv.txt 
    number:B 身高:180cm 年龄:22
    number:C 身高:172cm 年龄:23
    number:D 身高:179cm 年龄:18
    number:E 身高:171cm 年龄:30

看到没有,这里的“-”(连字符),就表示B到E之间所有字符。它表示一个范围。它跟[BCDE]是一样的。

以下是常用的:

 表示数字范围的[0-9];

 表示字母范围的[a-zA-Z]。

总结

由于篇幅所限,暂时写到此处。若有不当之处,望请指教。

推荐

(作者:穿山甲 来源:http://www.cnblogs.com/baochuan/p/3169988.html)

 
            
 
            
 
            
 
           
 
           
 
           
 
           
 
           
 
           
 
           
 
           
 
           
 
           

 
            
 
            
 
            
 
           
 
           
 
           
 
           
 
           
 
           
 
           
 
           
 
           
 
           

一字一句当思来之不易,感谢作者,传播测试知识、技能与正能量!

光荣之路软件测试培训

官网:http://www.gloryroad.cn/

微信公众号:gloryroadtrain

性能测试QQ群:415987441
软件测试招聘QQ群: 203715128
自动化3群QQ: 371211499

 
光荣之路 更多文章 今天晚上的 linux 公开课- Awk 编程 7月28日(今天)晚上的 linux 公开课- shell编程 8月4日(今天)晚上的 linux 公开课- shell编程 9月1日(本周一)晚8点半,光荣之路Web自动化系列基础课—javascript第二讲 推荐本好书《与机器赛跑》
猜您喜欢 Mysql TUTORIALS 【震撼】看看亚马逊最先进的第八代物流中心 【发布公告】您的应用卡么?Bugly全新功能:卡顿/ANR监控 聚沙成塔 hao123无线联盟分享移动红利 一致性Hash算法(KetamaHash)的c#实现