re模块
string提供的方法是完全匹配;re支持模糊匹配
字条匹配(普通字符,元字符)
普通字符
元字符
.通配符 匹配任意一个字符,除了\n
^a 从字符串开始位置匹配a
a$ 从字符串末尾位置匹配a
a* 重复匹配字符a 0次或多次,等价于{0, 正无穷}, {0, }
a+ 重复匹配字符a 1次或多次,等价于{1, 正无穷}, {1, }
a? 重复匹配字符a 0次或1次,等价于{0, 1}
a{m, n} 重复匹配字符a m次到n次
[]字符集 [ab]匹配字符a或b,可以取消元字符的特殊功能,除了(\ ^ -)
[a-z]匹配任意一个英文字母
[^a]匹配除a以外的任意字符
\反斜杠 \后面跟元字符去除特殊功能,跟普通字符实现特殊功能
\d 匹配任意十进制数,相当于类[0-9]
\D 匹配任意非数字字符,相当于类[^0-9]
\s 匹配任意空白字符,相当于类[ \t\n\r\f\v]
\S 匹配任意非空白字符,相当于类[^ \t\n\r\f\v]
\w 匹配任意字母数字字符,相当于类[a-zA-Z0-9_]
\W 匹配任意非字母数字字符,相当于类[^a-zA-Z0-9_]
\b 匹配一个特殊字符边界,也就是指单词和特殊字符间的位置
() 分组 (abc)+ 匹配字符串abc一次或多数 abcdabcdabc
| (ab | cd) 匹配字符串ab 或 cd
re.findall() 所有结果都返回到一个列表
re.search() 返回匹配到的第一个对象,对象可以调用group()返回结果
re.match() 从字符串开始匹配,返回匹配到的第一个对象,对象可以调用group()返回结果
re.split()
re.split('[ab]','sakcbk') # 先按a分组,再按b分组,得到's''kc''k'
re.sub()
re.sub('a..x', 'ddd', 'adklakkx', n) # 替换 adklddd n为指定替换的次数
re.compile(rgx) 编译成一个正则表达式对象
obj = re.compile('\.com')
obj.findall('fhasjd.comhfajld') # 通过obj调用findall()
re.finditer() 返回一个迭代器对象