正则表达式听起来有些让人头痛,但有时候又特别有用,尤其是一些程序中,其更是避不开的存在。不过Python提供了一个方便使用和处理正则表达式的包——re模块,使得在Python中使用正则表达式十分方便。可虽然如此,对正则表达式还是需要进行一番学习,方能在使用时得心应手,挥洒自如。 虽然目前我对正则表达式的学习和掌握还远远达不到这个境界,不过以目前的掌握,也已经足够在写代码时使用了。下面就对这些东西进行一下记录,以方便以后复习和使用。
1.匹配字母、数字和任意字符
1.可以直接使用任意字符匹配其本身,但如以下所列有特殊意义的字符除外; 2.使用.(英文句号)匹配任意除换行符(‘\n’)之外的字符; 3.使用\w匹配任意单词字符,包括大小写英文字母、数字及下划线(_); 4.使用\d匹配任意数字; 5.可以使用[]内放字符来匹配其中的任意字符,如[abc]匹配任意a或b或c,如[a-z]匹配任意小写字母; 6.因为.用来匹配任意字符,所以匹配.要使用\来转义,即:\.;但放在[]内例外,放在[]内的.只表示普通的.。
2.指定开头匹配、结尾匹配
有时候需要指定是在开头还是结尾匹配,比如看文件名是否以yueye开头,等等。 当然,指定以yueye开头可以直接使用’yueye’进行匹配,但指定结尾以及同时指定开头和结尾还不能直接使用这种形式。可以使用以下方式: 1.指定开头,以^表示,如:’^\d’指示以数字开头; 2.指定结尾,以$表示,如:’\d$’指示以数字结尾。 即指示开头的^放在字符串开头,指示结尾的$放在字符串结尾。
3.指定连续多少个
有时候需要指定匹配连续多少个数字,或者连续多少个某字符,使用以下方式: 1.’?’指示0次或1次,即最多一次,可能没有; 2.’*’指示0次或多次,即可能没有; 3.’+’指示1次或多次,即至少一次; 4.{}指示固定次数,如’\d{3}’表示三个数字。
4.使用规范
Python中re模块的使用通常如下(匹配以数字开头的.py文件):
import re
c = re.compile(‘^\d.\.py’)
m = re.match(c, ‘2python.py’) #可以先将匹配模式compile了,也可以直接将其传入,即 m = re.match(‘^\d.\.py’, ‘2python.py’)
if m:
如果匹配,返回m是一个_sre.SRE_Match的object,m.group()返回匹配结果
else:
#如果不匹配,返回m是None
5.示例
此处仅举一些我碰到的一些例子: 找到当前目录下所有以view开头紧跟数字(至少有一个数字)命名的.bin文件:
import re
bin_names = [p for _, _, pt in walk(os.getcwd()) for p in pt if re.match(‘^view\d+\.bin$’, p)]
判断用户输入是否符合邮箱格式:
import re
m = re.match(‘[\w.-]+@\w+\.\w+’, input)
if m:
input is an email address
else: