常用正则表达式分析
使用正则表达式可以简化程序设计。
例如在一个文本文件中包含一些联系人的手机号码,如果需要将使用联通和移动的号码区分出来,可以使用正则表达式分别匹配。
对于联通的号码,第3位是0到3中的一个数字,而移动则是4到9中的一个数字,可以根据此规则拍匹配。
如下正则表达式可以匹配联通手机号
|
|
其中13表示匹配手机号的前两位。[0-3]匹配手机号的第3位,表示0到3之间的任何一个数字。[0-9]{8}组合起来匹配手机号剩下的8位。
[0-9]表示0到9之间的任何一个数字,{8}表匹配[0-9]8次,也就是匹配任意一个8位数。
如下正则表达式可以匹配移动手机号
|
|
与联通匹配手机号正则不一样的地方就是第3位是用[4-9]。[4-9]表示4到9之间的任何一个数字
同样如果联系人的信息中还包含邮政编码,而又需要将其按地区区分的话也可以使用正则表达式。对于邮政编码的匹配相对简单一些,例如北京的邮政编码钱3位为100。
采用与匹配手机号同样的方式,只需在100之后匹配任意一个3位数,如下所示。
|
|
使用正则表达式匹配数字十分方便,但如果匹配字符串,则需要考虑较多的情况。例如,需要找出某一个文件中所有的网址则比较复杂。
以"http://www.python.org“为例,其可以分成4部分,首先是"http://",然后是"www”,再就是站名"python",剩下的是后缀"org"。
可能有些网址书写完整,具有以上4部分。而有些网址则不规则,不含"http://“部分。
将”http://www“当做一个部分,其可能的情况为”http://www“或者"www”,这一部分的正则表达式匹配可以如下
|
|
中间的站名作为一部分,这部分可能为字母、数字或者"-",因此改部分的正则表达式匹配可以写成如下
|
|
剩下的后缀,考虑到可能为两个或三个的字符,因此写成如下形式。
|
|
|
|
实例环境声明
|
|