贪婪和非贪婪
关于重复的操作,正则表达式默认是启用贪婪的匹配方式,即在符合情况下,尽可能地去匹配
>>> s = "< html ><title>I love </title></html>"
>>>re.search('<.+>',s)
<_sre.SRE_Match object;......,match = '< html ><title>I love </title></html>'>
由于贪婪模式的原因。直接匹配了整个字符串,我们希望遇到第一个>停下来,启用非贪婪模式,即在表示重复的元字符后加上问号
>>> s = "< html ><title>I love </title></html>"
>>>re.search('<.+?>',s)
<_sre.SRE_Match object;......,match = '< html >'>
反斜杠+普通字母 = 特殊含义
1)反斜杠加序号
若序号范围为1-99,则表示引用序号所对应的子组的字符串(子组的序号从1开始算起)
2)若序号以0开头或者是三位数的长度,则用于匹配八进制数字表示的ASCII码的字符
3)默认情况下,\A与^等效,\Z与$等效,默认情况指的是正则表达式标志的设置,若设置了re.MULTILINE标志,则^和$还可以匹配换行符的位置,而\A与\Z只能匹配字符串的起始和结束位置
匹配位置的字符称为零宽断言,言下之意,不匹配任何字符,只用于匹配一个位置
\b也是零宽断言,表示匹配一个单词的边界(?),单词定义为Unicode的字母数字或下横线字符