正则表达式入门教室(一)

简介:正则表达式在文本处理上具有非常大的优势,这篇文章将通过例子循序渐进的描述如何学习正则表达式。

 

经过一些现有的优秀站点的比较,正则表达式推荐配合https://regexr.com/ 站点来学习,后面的例程也会以这一站点的界面来辅助展示正则表达式的应用

 

 

第一个例子,找数字

 

 

贴上我随意输入的一段文本:

1234567890fd

a1234cdef

b4567ghio

12345ffff

 

 

如果我要寻找0-9所有数字,那么,我可以直接限定范围,比如说正则表达式直接输入[0-9]

 

 

或者说输入\d,也会选择所有的数字

 

当然,这一情况下处理得到的都是单个数字,如果要得到“粘一起”的怎么办?

 

答,可以使用符号‘+’来完成这个目的,它可以使得我们一口气匹配一个到无限个,‘+’号之前规定的字符至少出现一次。

 

 

如果要匹配【数字后跟着的字符是g】的那一组数字,直接在上一表达式的基础上追加一个g 字符

正则表达式:[0-9]+g

 

 

如果指定要匹配5位数字,那么可以使用{5}来对单组匹配的字符数量进行限定

正则表达式:[0-9]{5}

 

 

 

 

重新码一个只有数字的文本:

12

123

1234

12345

123456

 

如果是要匹配3到5个数字,那么这里使用{3,5}来对匹配字符数量进行限定。

正则表达式:[0-9]{3,5}

 

 

按照上面可以发现,有些一行有6个数字也会被匹配到5个,如果我们只想匹配一行5个数字的话,需要增加限制。

 

观察发现,我们可以限定数字作为开头,结尾则是换行符号

 

正则表达式:[0-9]{3,5}\n

 


通过以上学习可以做一个现实的例子:匹配手机的电话号码,测试电话号码是否合乎规范

 

输入:

18005345678

13605441312

13655555444

0456788

 

输出:

18005345678

13605441312

 

分析:可以了解电话肯定是以‘1’打头然后限定位数为11位,并且有区号‘05’

 

先确定开头一定是数字1

^1

然后是两位数范围在0到9之间

^1[0-9]{2}

区号前缀是“05”

^1[0-9]{2}05

最后是6位数结尾

^1[0-9]{2}05[0-9]{6}$

 

最终正则表达式:




 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值