我学正则表达式(1)

在做了一些文字处理工作后,觉得正则表达式真的是有通天的神力,熟练掌握后,顿觉手握倚天剑,心有九阳真经,脚踏风火轮,可以肆意地在文字的丛林里披荆斩棘。下面,我们就来看看基本的正则表达式的用法。

基本的正则表达式

刚刚碰到正则表达式的时候,我碰到了一个小任务,就是抽取上海公司网页中的电话号码,比如 021-34206500
我翻了翻书,了解了[]和-的用法后,高兴地用了这么一个正则表达式[0-9]+-[0-9]+ 完成了任务 ,其中[0-9]表示[0-9]中任选一个匹配,+表示后面可以重复1到N次,N代表无限。
不料,大神级别的项目组长看了这个表达式之后,说了句,“你是新手吧?”。靠,我真的很纳闷,他怎么看出来的?
最后,看了一些帖子,才发现,有人说过,菜鸟采用[0-9],大神都用\d,其中d是英语digit(数字)的第一个字母。
懂了以后,我把上面的表达式改成了 \d+-\d+,也能用。

不过,程序运行了几次后,又碰到了一个新问题,有的公司号码是这样的( 021)34206500, 有的还用了中文括号 021)34206500,这可怎么办,三种情况了?
      我突然想起,貌似有个点号可以匹配全部,试了下\d+.\d+,果真又搞定了
过了段时间,项目组长把我叫了过去,说抽取的号码有问题,有的位数多了,有的位数少了,比如有的公司竟然写了个4位数的号码, (021)4588.
问题来了,怎么把这些排除掉呢,我灵机一动,发现太简单了,直接写成\d\d\d.\d\d\d\d\d\d\d\d。写完以后,我觉得这他妈的真的长的,设计正则的人真的脑残,不能搞点简便的办法吗?
话说我才刚想喷这么一句,有人从后面拍了下我肩膀,说,“你怎么这么写?让我来给你SHOW一个大招。”。说罢,他一改,\d{3}.\d{8}。
“短了那么多,能行吗?”
“试试“
一试,还真的可以。原来可以用{}里面加个数字来表示重复次数。又学一招。

小结

在本文中,我们学习了下列内容:
+, 匹配1到N次重复
[0-9], 匹配数字
\d,用字符表示数字
{N}, 重复N次
(未完待续)


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值