tip1:|理論上是要加上括號的(括號表示是這些以|分開的規(guī)則中的某一個部分),如果左右描述了完整的表達式才不用加括號。
tip2:“.”在正則表達式中有特殊意義,所以需要匹配“.”的時候,不能直接寫上不管,而是要用""轉(zhuǎn)義符把正則的“.”屬性去掉,而恢復原來的“.”的真實含義。
tip3:明確知道后面不能再跟上東西的時候要有$結(jié)尾。

正則表達式匹配郵箱賬號
>>> p = r"(\w+)@(163|126|qq|gmail)\.(com|cn|net)$"
>>> r = re.match(p, "itcast@qq.com")
>>> r
<_sre.SRE_Match object; span=(0, 13), match='itcast@qq.com'>
>>> r.group()
'itcast@qq.com'
>>> r.groups()
('itcast', 'qq', 'com')
>>> r.groups(1)
('itcast', 'qq', 'com')
- 當需要的括號分組多容易亂的時候,使用序號表示就變得不再方便,這時候我們可以用?P<>來對這個括號匹配進行命名。?P<>不屬于正則表達式中的內(nèi)容,真正起作用的是其他內(nèi)容。<>里面寫名字。
使用示例:
>>> s
'<html><h1>itcast</h1></html>'
>>> re.match(r"<(?P<key1>.+)><(?P<key2>.+)>.+</(?P=key2)></(?P=key1)>", s)
<_sre.SRE_Match object; span=(0, 28), match='<html><h1>itcast</h1></html>'>
起名時候用<>,用的時候用=;起名的時候要把被起名的表達式一起括起來,用的時候把自己括起來。