tip1:|理论上是要加上括号的(括号表示是这些以|分开的规则中的某一个部分),如果左右描述了完整的表达式才不用加括号。
tip2:“.”在正则表达式中有特殊意义,所以需要匹配“.”的时候,不能直接写上不管,而是要用""转义符把正则的“.”属性去掉,而恢复原来的“.”的真实含义。
tip3:明确知道后面不能再跟上东西的时候要有$结尾。
>>> 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<>不属于正则表达式中的内容,真正起作用的是其他内容。<>里面写名字。
使用示例:
>>> 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>'>
起名时候用<>,用的时候用=;起名的时候要把被起名的表达式一起括起来,用的时候把自己括起来。
网友评论