1.字符匹配
(1)普通字符
大多数字母和字符会和自身匹配
(2)元字符
. ^ $ * + ? {} \ | ()
2.元字符理解
(1)[]用来指定字符集:[a-z],元字符在字符集中不起作用,补集匹配不在区间范围内字符
>>> st="top tip tqp twp tep"
>>> res=r"top"
>>> re.findall(res,st)
['top']
>>> res=r"t[io]p"
>>> re.findall(res,st)
['top', 'tip']
>>> res=r"t[^io]p" #[^io]表示不包含io
>>> re.findall(res,st)
['tqp', 'twp', 'tep']
(2)^(匹配行首,在mulitiline模式匹配换行)
>>> s="hello word,hello boy"
>>> r=r"^hello"
>>> re.findall(r,s)
['hello']
(3) $(匹配行尾)
>>> r=r"boy$"
>>> re.findall(r,s)
['boy']
(4)\(可用于取消所有元字符)
\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_]
(5)重复
>>> r=r"^010-\d{8}" #代表重复8次\d
>>> re.findall(r,"010-98707890")
['010-98707890']
(6)*(将前一个字符重复零次或多次)
>>> r=r"ab*"
>>> re.findall(r,"aaaaabbbbfffff")
['a', 'a', 'a', 'a', 'abbbb']
>>> re.findall(r,"a")
['a']
(7)+( 将前一个字符匹配一次或多次)
>>> r=r"ab+"
>>> re.findall(r,"a")
[]
(8)?(匹配一次或零次,标识某物是可选的)
>>> r=r"^010-?\d{8}$"
>>> re.findall(r,"010-98707890")
['010-98707890']
>>> re.findall(r,"01098707890")
['01098707890']
(9){m,n}(至少重复m次,至多重复n次){0,}等同于*
{1,}等同于+,{0,1}与?相同
>>> r=r"a{1,3}"
>>> re.findall(r,"01abcdaasa")
['a', 'aa', 'a']