《精通正则表达式》读书笔记摘要: 第二章 入门示例拓展(1)

使用证则表达式匹配文本

这一章的开篇几节介绍perl及如何利用perl语言结合正则表达式完成一个温度转换程序。
随着作者的步步深入,我明白了正则表达式在程序中处理数据的机理和方法。下面列出来这个温度转换程序中所用到的正则表达式的进化过程,该表达式扮演的角色就是验证用户输入的数据是否符合标准。

  1. 要求用户必须输入数字,程序把该数字转化成华氏温度。
    表达式很简单:^[0-9]+$
  2. 用户可能输入负数或小数部分,继续改造表达式。
    ^[-+]?[0-9](/.[0-9])?$ 可有可无的输入部分用问号进行限定。
  3. 目前的表达式只能匹配数字,还不能甄别是华氏温度还是摄氏温度,继续改造。
    ^[-+]?[0-9]+(/.[0-9]*)?[ ][CF]$
  4. 现在的表达式能够匹配以c或f结尾的数据输入了,但是需要在程序中识别出哪部分是数字部分,哪部分是标示部分,这时需要用到分组,改造如下:
    ^([-+]?[0-9]+(/.[0-9]*)?)[ ]([CF])$ 经过改造后的表达式与之前在功能上没有分别,但在程序中能给出分组后每组匹配的内容,依据括号的开合位置,可用三个变量来存储每组匹配的文本分别是 $1=小数点前面内容,$2=小数点后面的浮点数据,$3=字母标示。
  5. 改表达式还可以继续进化,如用户输入的数据中在字母标示前有很多空格怎么办?可以让/s大显身手了。
    ^([-+]?[0-9]+(/.[0-9]*)?)/s*([CF])$
    /s 可表示任意一个空白,包括空格,缩进,制表符,换行符,回车符。

一些有用的简记法

/t     制表符
/n   换行符
/r    回车符
/s   任何空白符
/S  非空白符
/w  相当于[a-zA-Z0-9]
/W 除/w之外的任何字符
/d  匹配数字[0-9]
/D 匹配非数字[^0-9]

使用整则表达式修改文本

( 待续)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值