Seventeen re模块
1、re模块
元字符 匹配内容
\w 匹配字母(包含中文)或数字或下划线
\W 匹配非字母(包含中文)或数字或下划线
\s 匹配任意的空白符
\S 匹配任意非空白符
\d 匹配数字
\D 匹配非数字
\A 从字符串开头匹配
\Z 匹配字符串的结束,如果是换行,只匹配到换行前的
\n 匹配一个换行符
\t 匹配一个制表符
^ 匹配字符串的开始
$ 匹配字符串的结尾
. 匹配任意字符,除了换行符,当re.DOTALL标记被指定时,
则可以匹配包括换行符的任意字符。
[...] 匹配字符组中的字符
[^...] 匹配除了字符组中的字符的所有字符
* 匹配0个或者多个左边的字符
+ 匹配一个或者多个左边的字符。
? 匹配0个或者1个左边的字符,非贪婪方式
{n,m} 匹配n到m次由前面的正则表达式定义的片段,贪婪方式
a|b 匹配a或者b
() 匹配括号内的表达式,也表示一个组
# 模板
import re
正则匹配: print(re.findall('\d','1234567890 benja *(_')) # ['1', '2', '3', '4', '5'] 重复匹配: print(re.findall('a.b', 'ab aab a*b a2b a牛b a\nb')) # ['aab', 'a*b', 'a2b', 'a牛b'] # * 匹配0个或者多个左边字符表达式。 满足贪婪匹配 @@ print(re.findall('ab*', 'ab aab aaab abbbbb')) # ['ab', 'a', 'ab', 'a', 'a', 'ab', 'abbbbb'] # .*? 此时的?不是对左边的字符进行0次或者1次的匹配, # 而只是针对.*这种贪婪匹配的模式进行一种限定:告知他要遵从非贪婪匹配 推荐使用! # print(re.findall('a.*?b', 'ab a1b a*()b, aaaaaab')) # ['ab', 'a1b', 'a*()b']
import re #1 findall 全部找到返回一个列表。 # print(relx.findall('a', 'alexwusirbarryeval')) # ['a', 'a', 'a'] # 2 search 只匹配字符串的开始然后返回一个包含匹配信息的对象,该对象可以通过调用group()方法得到匹配的字符串,如果字符串没有匹配,则返回None。 # print(relx.search('sb|alex', 'alex sb sb barry 日天')) # <_sre.SRE_Match object; span=(0, 4), match='alex'> # print(relx.search('alex', 'alex sb sb barry 日天').group()) # alex # 3 match 一直找,不过在字符串开始处进行匹配,完全可以用search+^代替match # print(relx.match('barry', 'barry alex wusir 日天')) # <_sre.SRE_Match object; span=(0, 5), match='barry'> # print(relx.match('barry', 'barry alex wusir 日天').group()) # barry # 4 split 分割 可按照任意分割符进行分割 # print(relx.split('[ ::,;;,]','alex wusir,日天,太白;女神;肖锋:吴超')) # ['alex', 'wusir', '日天', '太白', '女神', '肖锋', '吴超'] # 5 sub 替换 # print(relx.sub('barry', '太白', 'barry是最好的讲师,barry就是一个普通老师,请不要将barry当男神对待。')) # 6 # obj=relx.compile('\d{2}') # print(obj.search('abc123eeee').group()) #12 # print(obj.findall('abc123eeee')) #['12'],重用了obj
# 命名分组匹配: ret = re.search("<(?P<tag_name>\w+)>\w+</(?P=tag_name)>","<h1>hello</h1>") # #还可以在分组中利用?<name>的形式给分组起名字 # #获取的匹配结果可以直接用group('名字')拿到对应的值 # print(ret.group('tag_name')) #结果 :h1 # print(ret.group()) #结果 :<h1>hello</h1>


浙公网安备 33010602011771号