19.4 Python入门之正则表达式

贪婪和非贪婪


关于重复的操作,正则表达式默认是启用贪婪的匹配方式,即在符合情况下,尽可能地去匹配


>>> 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的字母数字或下横线字符


猜你喜欢

转载自blog.csdn.net/lwz45698752/article/details/79257938
今日推荐