python的re模块总结

上传人:碎****木 文档编号:220862502 上传时间:2021-12-09 格式:DOCX 页数:4 大小:15.59KB
返回 下载 相关 举报
python的re模块总结_第1页
第1页 / 共4页
python的re模块总结_第2页
第2页 / 共4页
python的re模块总结_第3页
第3页 / 共4页
亲,该文档总共4页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《python的re模块总结》由会员分享,可在线阅读,更多相关《python的re模块总结(4页珍藏版)》请在金锄头文库上搜索。

1、Python 之 re 模块Python 用 表示正则表达式中的 ,因为正则表达式中如果要匹配 ,需要用来转义,变成 ,而 Python 语法中又需要对字符串中每一个进行转义,所以就变成了 。为了使正则表达式具有更好的可读性,Python 特别设计了原始字符串(raw string) rawstring 就是用r作为字符串的前缀,如 rn:表示两个字符和n,而不是换行符了。Python中写正则表达式时推荐使用这种形式。例如:可以使用 或者 r 进行匹配需要提醒你的是,在写文件路径的时候就不要使用 raw string 了,这里存在陷阱。 一:Re 模块正则匹配:(1)d 匹配任何十进制数;

2、它相当于类 0-9。D 匹配任何非数字字符;它相当于类 0-9。s 匹配任何空白字符;它相当于类 fv。S 匹配任何非空白字符;它相当于类 fv。w 匹配任何字母数字字符;它相当于类 a-zA-Z0-9_。W 匹配任何非字母数字字符;它相当于类 a-zA-Z0-9_。具有重复功能的元字符:* 对于前一个字符重复 0 到无穷次+对于前一个字符重复 1 到无穷次?对于前一个字符重复 0 到 1 次m,n 对于前一个字符重复次数在为 m 到 n 次,其中,0, = *,1, = , 0,1 = ?m 对于前一个字符重复 m 次(2)和$m = re.search(r(www.)?,str)可以匹配

3、XXX m = re.search(r(www.)?,str)可以匹配 和 在元字符中,在不同位置所代表的意义。re.search(abc,abcd) # 在首字符表示取反,即 abc 之外的任意字符。 m=re.search(abc,abcd)m.group() d m=re.search(abc,) # 如果在 中不是首字符,那么那就是一个普通字符m.group() 元字符($)匹配字符串的结尾或者字符串结尾的换行之前。m=re.search(foo.$,foo1nfoo2n,re.MULTILINE)print m.group() foo1(3)有几点注意的地方:1. m.n用来表示前面

4、正则表达式重复 m 到 n 次,尝试匹配尽可能多的 copy。re.findall(a2,4,aaaaaaaa) aaaa, aaaa#可以看到m,n,正则表达式优先匹配 n,而不是m,因为结果不是aa,aa,aa,aare.findall(a2,aaaaaaaa)aa, aa, aa, aa #匹配重复两次re.findall(a2,4?,aaaaaaaa)aa, aa, aa, aa#m,n? 用来表示前面正则表达式的 m 到 n 次 copy,尝试匹配尽可能少的 copy2. 元字符“.”在默认模式下,匹配除换行符外的所有字符。在 DOTALL 模式下,匹配所有字符, 包括换行符。 m=

5、re.match(.,n) print m None m=re.match(.,n,re.DOTALL)print #,m.group(),# #3. 可以将匹配模式赋值给变量:pat=a-zA-Z+text=”HmErfunshion?”funshion!m=re.findall(pat,text)print mHm, Er, funshion, funshionre 模块主要函数pile(pattern, flags=0)编译正则表达式,返回RegexObject 对象,然后可以通过RegexObject 对象调用match()和 search()方法。prog = pile(patter

6、n) result = prog.match(string) 跟result = re.match(pattern, string)是等价的。re.search()和 re.match()str=m = re.match(rwww,str)m 不为 None等同于 m=re.search(rwww,str) m = re.match(rcom,str)m 等于 Nonem=re.search(rcom,str)m 不为 Nonere.split(pattern, string, maxsplit=0)通过正则表达式将字符串分离。如果用括号将正则表达式括起来,那么匹配的字符串也会被列入到 lis

7、t 中返回。maxsplit 是分离的次数,maxsplit=1 分离一次,默认为 0,不限制次数。默认分割符为空格。re.split(W+, Words, words, words.)Words, words, words, re.split(W+), Words, words, words.) Words, , , words, , , words, ., re.split(W+, Words, words, words., 1) Words, words, words.特别的:可以利用 split( n )去掉末尾的换行符re.findall()匹配所有子串,并把它们作为一个列表返回。从

8、左到右有序地返回;如果无匹配,返回空列表。re.findall(a,bcdef) re.findall(rd+,12a32bc43jf3) 12, 32, 43, 3特别的:a=abcdfana1b2c3m=re.findall(aw+,a,re.MULTILINE)print a,m.group(0) abcdfa, a1b2c3m=re.findall(rd+,12a,32c,n43j,3,re.MULTILINE)print m 12, 43多行匹配方式(包含n)只有在 multiline 下可以进行。rearch 和 match 匹配到就返回, 不能匹配到多个结果,findall 可以

9、匹配多个结果。上述结果可以验证,是匹配换行符之后, 结果提示可以利用“”在 MULTILINE 模式可以匹配字符”n”后的字符re.sub()使用给定的替换内容将匹配模式的子字符串替换掉pat= nametext= hi namem=re.sub(pat, funshion ,text)print m hifunshionre.finditer(pattern, string, flags=0)找到 RE 匹配的所有子串,并把它们作为一个迭代器返回。这个匹配是从左到右有序地返回。如果无匹配,返回空列表。it = re.finditer(rd+,12a32bc43jf3) for match in it:print match.group() 1232433

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 教育/培训

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