读书笔记《Mastering Regular Expressions》(三)

MasteringRegEx一、Non-Capturing

这个Non-Capturing的确不知道该如何翻译(非捕获?),但意思是明白了。用圆括号括起来的部分可以被捕获到$1、$2……中,但如果起始圆括号后面紧跟一个问号和冒号,就表示本组不需要被捕获到$1、$2……中。

例如,下列正则表达式中

^([-+]?/d+(/./d*)?)([CF])$
  • 第1个被捕获的组:从第一个左圆括号,到与该左圆括号配对的右括号,被存储到$1中(整数+小数点+小数部分)
  • 第2个被捕获的组:从第二个左圆括号,到与该左圆括号配对的右括号,被存储到$2中(小数点+小数部分)
  • 第3个被捕获的组:从第三个左圆括号,到与该左圆括号配对的右括号,被存储到$3中(C或F)

如果是下面的正则表达式:

^([-+]?/d+(?:/./d*)?)([CF])$

注意红色的部分,有了这个就表示本组不要捕获,这样,$2中存储的就是([CF])这一组,没有$3了。

二、字符转义
  • /bTAB字符(ASCII码9)
  • /n换行符(ASCII码10)
  • /r回车符(ASCII码13)
  • /s所有能代表“空白”的字符(包括空格、制表、换行等)
  • /S所有不是/s的字符
  • /w大小写字母、数字和下划线,与[a-zA-Z0-9_]等价
  • /W所有不是/w的字符,与[^a-zA-Z0-9_]等价
  • /d数字,与[0-9]等价
  • /D所有非数字字符,与[^0-9]等价
三、文本替换

先前知道了m的作用(匹配),把m换成s就成了“替换”,另外,好友告诉我有了m,就可以用任何一对符号来括住正则表达式,不必老是用/,说不定s也一样。

$name =~ s//bSaddam/b/Bush/;

这句表示:把$name里面存储的内容,凡是匹配到单词边界的Saddam,通通替换为Bush。

四、Perl的一些语法
while ($var = <>) {
}

这个“$var=<>”看起来有点古怪,其实就是“var = getline()”,也就是说,从输入流中取下一行的内容,并赋值变量中,如果输入流已结束,则变量值未定义,同时整个赋值表达式返回布尔假。

关键字last,与C里面的continue类似。

函数defined($var)测试一个变量里是否含有值,是则返回true,否则返回false。

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值