1、字符
.:匹配任意字符,除换行符\n之外,.abc匹配abc。
\:转义字符,使后一个字符改变原来的意思,a.bc匹配abc
[...]:字符集,对应字符集中的任意字符,第一个字符是^则取反。a[bc]d匹配abd和acd
2、预定义字符集
\d:数字[0-9]
\D:非数字[^\d]
\s:空白字符[空格\t\r\n\f\v]
\S:非空白字符[^\s]
\w:单词字符[a-zA-Z0-9_]
\W:非单词字符[^\w]
3、数量词
*:匹配前一个字符0或无限次。a1*b匹配ab、a1b、a11b...
+:匹配前一个字符1或无限次。a1+b匹配a1b、a11b...
?:匹配前一个字符0或1次。a1?b匹配ab、a1b
{m}:匹配前一个字符m次。a1{3}b匹配a111b
{m,n}:匹配前一个字符m~n次。a1{23}b匹配a11b、a111b
4、边界匹配
:匹配字符串开头,如abc匹配以abc开头的字符串
$:匹配字符串结尾,如abc$匹配以abc结尾的字符串
\A:仅匹配字符串开头,如\Aabc
\Z:仅匹配字符串结尾,如abc\Z
5、常用模块
python的re模块提供了两种不同的原始操作:match和search。match是从字符串的起点开始匹配,而search是对字符串做任意匹配。常用做法如下:
re.compile(pattren,flags=0):将字符串形式的正则表达式编译为Pattern对象
re.search(string[,pos[,endpos]]):从string的任意位置开始匹配
re.match(string[,pos[,endpos]]):从string的开头开始匹配
re.findall(string[,pos[,endpos]]):从string任意位置开始匹配,返回一个列表
re.finditer(string[,pos[,endpos]]):从string任意位置开始匹配,返回一个迭代器。一般匹配使用findall即可,大数量的匹配使用finditer比较合适。