Python正则表达式简记

在 2017-04-22 发布于 人工智能 下以来已有434人读过本文 | 0条评论 发表评论

正则表达式听起来有些让人头痛,但有时候又特别有用,尤其是一些程序中,其更是避不开的存在。不过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:
  # input is not an email address

参考

这是一篇写的很好的Python正则表达式的文章

发表评论

您的昵称 *

您的邮箱 *

您的网站