python正则表达式专题

上传人:jiups****uk12 文档编号:40014965 上传时间:2018-05-22 格式:DOC 页数:5 大小:31.11KB
返回 下载 相关 举报
python正则表达式专题_第1页
第1页 / 共5页
python正则表达式专题_第2页
第2页 / 共5页
python正则表达式专题_第3页
第3页 / 共5页
python正则表达式专题_第4页
第4页 / 共5页
python正则表达式专题_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《python正则表达式专题》由会员分享,可在线阅读,更多相关《python正则表达式专题(5页珍藏版)》请在金锄头文库上搜索。

1、python正正则则表达式表达式专题专题python正则表达式专题一、整理其应用于python的用到的正则表达式1.1字符匹配元字符列表:.$*+?|()字符可以单个列出,也可以用“-“号分隔的两个给定字符来表示一个字符区间。例如,abc将匹配“a“,“b“,或“c“中的任意一个字符;也可以用区间a-c来表示同一字符集,和前者效果一致。如果你只想匹配小写字母。那么RE应写成a-z.你可以用补集来匹配不在区间范围内的字符。其做法是把“作为类别的首个字符;其它地方的“只会简单匹配“字符本身。例如,5将匹配除“5“之外的任意字符。也许最重要的元字符是反斜杠“。做为Python中的字符串字母,反斜杠后

2、面可以加不同的字符以表示不同特殊意义。它也可以用于取消所有的元字符,这样你就可以在模式中匹配它们了。举个例子,如果你需要匹配字符“或“,你可以在它们之前用反斜杠来取消它们的特殊意义:或。PS:其中的表示转义处理常用的字符:d匹配任何十进制数;它相当于类0-9。D匹配任何非数字字符;它相当于类0-9。s匹配任何空白字符;它相当于类tnrfv。S匹配任何非空白字符;它相当于类tnrfv。w匹配任何字母数字字符;它相当于类a-zA-Z0-9_。W匹配任何非字母数字字符;它相当于类a-zA-Z0-9_。这两种写法是等价的!1.2重复第一个重复功能的元字符是*。*并不匹配字母字符“*“;相反,它指定前一

3、个字符可以被匹配零次或更多次,而不是只有一次。另一个重复元字符是+,表示匹配一或更多次。请注意*和+之间的不同;*匹配零或更多次,所以根本就可以不出现,而+则要求至少出现一次。问号?匹配一次或零次;最复杂的重复限定符是m,n,其中m和n是十进制整数。该限定符的意思是至少有m个重复,至多到n个重复。你可以忽略m或n;因为会为缺失的值假设一个合理的值。忽略m会认为下边界是0,而忽略n的结果将是上边界为无穷大-实际上是先前我们提到的2兆,但这也许同无穷大一样。PS:包括*?+m,n这样的重复标识了解了常用的正则表达式之后就可以将其融入到python里面了。因为我发现不同的语言在正则上面还是有点差异的

4、。故此我先将其能用到的正则内容整理完。二、python中应用正则使用正则对象import re p=pile(1-9d*$,re.S)得到一个RegexObject对象。可以用它来做的事情如下:方法/属性作用match()决定RE是否在字符串刚开始的位置匹配search()扫描字符串,找到这个RE匹配的位置findall()找到RE匹配的所有子串,并把它们作为一个列表返回finditer()找到RE匹配的所有子串,并把它们作为一个迭代器返回如果没有匹配到的话,match()和search()None。如果成功的话,就会返回一个MatchObject实例,其中有这次匹配的信息:它是从哪里开始和结

5、束,它所匹配的子串等等。PS:所以可以这样写#-*-coding:utf-8-*-import re p=pile(1-9d*$,re.S)if p.match(“sd“):如果存在则不会返回None值对象print“is ok“else:print“not“如果返回了一个MatchObject对象之后就可以使用其方法进行相关操作现在你可以查询MatchObject关于匹配字符串的相关信息了。MatchObject实例也有几个方法和属性;最重要的那些如下所示:方法/属性作用group()RE匹配的字符串start()返回匹配开始的位置end()返回匹配结束的位置span()返回一个元组包含匹配

6、开始,结束的位置试试这些方法不久就会清楚它们的作用了:一般的代码:#-*-coding:utf-8-*-import re p=pile(1-9d*$,re.S)if p.match(“23“):#如果此匹配返回的不是None之后就可以继续调用它方法print p.match(“23“).group(0)#调用其print“is ok“else:print“not“一般的写法:#!pythonp=pile(.)m=p.match(string goes here)if m:#如果返回不为None则可以继续printMatch found:,m.group()else:printNo match2.2编译标志这有个可用标志表,对每个标志后面都有详细的说明。标志含义DOTALL,S使.匹配包括换行在内的所有字符IGNORECASE,I使匹配对大小写不敏感LOCALE,L做本地化识别(locale-aware)匹配MULTILINE,M多行匹配,影响和$VERBOSE,X能够使用REs的verbose状态,使之被组织得更清晰易懂

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号