精通正则表达式--正则表达式入门示例拓展(2)总结笔记重点捕获型括号、环视字符

  1. Perl中,$Fahrenheit$Celsius之类的普通变量一般以$开头,可以保存一个数值或者任意长度的文本。
  2. if ($reply =~ m/^[0-9]+$/)m/…/代表尝试进行“正则表达式匹配”。=~用来连接正则表达式和待搜索的目标字符串,左侧返回值是true&false。
  3. 括号没有改变正则表达式意义,但把括号内的数据保存了下来。$celsius =~ m/^[-+]?[0-9]+[CF]$/$celsius =~ m/^([-+]?[0-9]+)([CF])$/两个代码意义一样。
    这里写图片描述

  4. 捕获型括号:
    这里写图片描述

  5. 非捕获型括号(?…),例如$celsius =~ m/^([-+]?[0-9]+)([CF])$/,即使[CF]两端的括号排在第三位,它匹配的文本也会保存在$2中,因为(?…)不会影响捕获计数。
  6. \b在正则表达式中匹配一个单词的分界符,但在字符组中,它匹配一个退格符。
  7. \s匹配所有”空白”。
  8. i称作修饰符,把它放在m/…/结构之后,告诉Perl进行不区分大小写的匹配,不是正则表达式的一部分,是m/…/结构的一部分。例如:$input =~ m/^([-+]?[0-9]+(\.[0-9]+)?)\s+([CF])$/i
  9. /g也是m/…/结构的一部分,进行全局操作。不是正则表达式的一部分。
  10. 可以用^/s*$检查空行。
  11. .*通常用来表示“一组任何字符”,但其中会有陷阱。
  12. 环视不会占用字符,它只能寻找到能够匹配的位置。(?=Jeffrey)JeffJeff(?=rey)是等价的。
    这里写图片描述
  13. 查找和替换。格式和信息匹配类似$var =~ m/rege x/,此格式为$var =~ s/rege x/replacement/,如果正则表达式能够匹配$var中的某段文本,则将这段匹配的文本替换为replacement。
  14. 再来几个顺序环视的例子:要求把所有“Jeffs”替换为“Jeff’s”。不使用环视s/Jeffs/Jeff's/g或更好的s/\bJeffs\b/Jeff's/g\b为界符,不容易匹配到错误的单词。复杂些的表达式s/\b(Jeff)(s)\b/$1'$2/g,简单的s/\bJeffs\b/Jeff's/g,正则表达式表示方式s/\bJeff(?=s\b)/Jeff'/g
    这里写图片描述
    这几种方式的比较:
    这里写图片描述
    三种表达方式比较:
    这里写图片描述
    匹配【Jeffrey】里面的【Jeff】
    这里写图片描述
    匹配右侧紧跟着是【s\b】的【Jeff】字符串
    这里写图片描述
    匹配左侧为【\b Jeff】右侧为【s \b】的字符位置

    前两个正则表达式匹配的都是一个字符串,第三个匹配的是一字符个位置。

  15. 四种类型的环视
    这里写图片描述

  16. 一次迭代完成时,下一次的迭代会在上一次匹配的终点开始尝试。使用顺序环视的意义在于,检查某个位置,单间差时匹配的字符并不算在(最终)“匹配的字符串”内。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值