【Python 第57课】 正则表达式(3)

先来公布上一课习题的答案:

\bs\S*?e\b

有的同学给出的答案是"\bs.*?e\b"。测试一下就会发现,有奇怪的'sea sue'和'sweet see'混进来了。既然是单词,我们就不要空格,所以需要用"\S"而不是"."

昨天有位同学在论坛上说,用正则表达式匹配出了文件中的手机号。这样现学现用很不错。匹配的规则是"1.*?\n",在这个文件的条件下,是可行的。但这规则不够严格,且依赖于手机号结尾有换行符。今天我来讲讲其他的方法。

匹配手机号,其实就是找出一串连续的数字。更进一步,是11位,以1开头的数字。

还记得正则第1讲里提到的[]符号吗?它表示其中任意一个字符。所以要匹配数字,我们可以用

[0123456789]

由于它们是连续的字符,有一种简化的写法:[0-9]。类似的还有[a-zA-Z]的用法。

还有另一种表示数字的方法:

\d

要表示任意长度的数字,就可以用

[0-9]*

或者

\d*

但要注意的是,*表示的任意长度包括0,也就是没有数字的空字符也会被匹配出来。一个与*类似的符号+,表示的则是1个或更长。

所以要匹配出所有的数字串,应当用

[0-9]+

或者

\d+

如果要限定长度,就用{}代替+,大括号里写上你想要的长度。比如11位的数字:

\d{11}

想要再把第一位限定为1,就在前面加上1,后面去掉一位:

1\d{10}

OK. 总结一下今天提到的符号:

[0-9]

\d

+

{}

现在你可以去一个混杂着各种数据的文件里,抓出里面的手机号,或是其他你感兴趣的数字了。

面向零基础初学者的编程课

每天5分钟,轻松学编程

回复『 p 』查看python课程

回复『 g 』查看pygame课程

回复『 t 』查看习题

回复『 w 』查看其他文章

原文发布于微信公众号 - Crossin的编程教室(crossincode)

原文发表时间:2013-09-22

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Crossin的编程教室

【Python 第51课】 and-or技巧

今天介绍一个python中的小技巧:and-or 看下面这段代码: a = "heaven" b = "hell" c = True and a or b p...

2899
来自专栏Hongten

java中char类型和int类型相加结果是char类型还是int类型?

当然,首先,我们可以肯定的是,这两个是可以相加的。其次,我们要知道他们都是基础类型。最后,我们要明白一点:

3632
来自专栏青蛙要fly的专栏

Android技能树 — 数组,链表,散列表基础小结

现在安卓面试,对于数据结构的问题也越来越多了,要求也越来越多,所以我对于数据结构只能慢慢补起来了。(灬ꈍ ꈍ灬)

1294
来自专栏Web行业观察

从JSON进化到BSON

自从MEAN引导的JSON数据格式取代传统JAVA推崇的XML以后, json的发展却停滞不前了, 当然这是好事, 因为稳定的结构是不需要向下兼...

3444
来自专栏编程之旅

Python——搞定烦人的字符串编码

在学习Python之前,就听说过Python的版本圣战,最可怕的是有的写Py3的程序员觉得Py2是另一种语言....所以在刚开始学习的时候,我索性把Python...

1033
来自专栏aCloudDeveloper

python学习总结

最近经学长介绍学习python,为研究生做研究做准备,python对于科学计算有着很高的效率,对于科研人员当然是有着很强的诱惑,虽然我还没真正用它,但从整个学习...

2725
来自专栏Kotlin源码阅读

Kotlin源码阅读——Math

NaN其实在JVM上的语言,并不像JS一样,要特别地学习一下,但是NaN这个逻辑也确实存在。代码跟进去:

3534
来自专栏GreenLeaves

正则表达式简介

简介:完整的正则表达式由两种字符构成。特殊字符(如*、[]、&、@、$等称为元字符),其他为文字,或者是普通字符,为了便于理解,我们可以把正则表达式想象为普通的...

2166
来自专栏Golang语言社区

Golang 常见问题

1. Golang的特点和发起目的 Golang的特点以及要解决的问题概括起来就是三点: 1. concurrent : 多核 解决方式-> 语言层级并发, ...

3816
来自专栏python3

习题35:物以类聚

用到"class"的编程语言被称为"Object Oriented Programming(面向对象编程)"语言,这是一种传统的编程方式,你需要做出'东西'来,...

913

扫码关注云+社区

领取腾讯云代金券