Python正则表达式一: 基本使用方法
学习python的正则表达式,主要有两个方面学习:
第一,学习如何写正则表达式,主要是掌握其语法规范。正则表达式的语法规范是通用的,对各种开发语言都是一致的。
第二,学习如何使用正则表达式,也就是掌握python中相应的模块,在python中,通过提供的标准模块 re 来提供相应的使用正则表达式的api
正则表达式的核心作用就是匹配文本片段,即给出一个正则表达式,以及一段文本,看看这段文本中哪些片段是可以与正则表达式匹配的。
利用正则表达式可以实现非常强大的文本处理功能,如匹配、查找、替换、分组等。
例1:我们先来看一个简单例子:
#coding=utf-8 import re #search的第一个参数是 正则表达式,第二个参数是要处理的文本 if re.search('abc','12abc45'): #结果输出find print "find" else: print "None" #search的第一个参数是 正则表达式,第二个参数是要处理的文本 if re.match('abc','12abc45'): #结果输出None print "find" else: print "None"
上面的代码涉及到如下信息:
1)re模块,这是python提供的处理正则表达式的标准模块,包含了很多有用的方法
2)re模块的search方法和match方法,这两个方法都是在给定文本中查找与指定正则表达式第一个相匹配的文本片段。如果找到,返回一个对象,对象中包含了相应的文本片段信息。如果找不到,返回None。所以其查找的结果可以用作条件表达式中。
search与match的区别是,search方法是在整个字符串中查找匹配的字串,而match方法是在开头匹配,也就是说必须开头就要符合。
3)search与match方法的第一个参数就是正在表达式,这里是一个普通的字符串,其实这是最简单的正则表达式。正则表达式最强大的之处就是它有各种元字符。
如 a.b ,这里的.就是一个特殊字符,可以匹配任何单个字符(除换行符),如re.search('a.c','12axc45') 是可以匹配成功的。
例2:精确匹配的处理
上面介绍的 search 方法是在整个字符串中查找匹配,match方法是从头匹配,但对后面的无要求。
在某些场合下,需要精确匹配,如给定正则表达式为 a.c ,希望只匹配 axc , abc 等,头尾不希望有多余的字符。
这是可在正则表达式的头加符号︿ ,在结尾加上 $ ,可以强制精确匹配。但然也可以只限制开始 或 结束。
使用 ︿,其实相当于使用match方法。
如:
>>> print re.search('^abc$','abcd')
None
>>> print re.search('^abc$','abc')
<_sre.SRE_Match object at 0x0339A020>