python re模块三

元字符(*),表示匹配前面正则表达式零次或多次
元字符(?),表示匹配前面正则表达式零次或者一次
元字符(+),表示匹配前面正则表达式一次或者多次
元字符({N}),表示前面正则表达式的N次copy,如"a{5}“,表示匹配5个”a”,即"aaaaa”

>>> re.findall("a{5}","aaaaaaaaaa")
 ['aaaaa', 'aaaaa']
>>> re.findall("a{5}","aaaaaaaaa")
['aaaaa']

{m.n}用来表示前面正则表达式的m到n次copy,尝试匹配尽可能多的copy。

>>> re.findall("a{2,4}","aaaaaaaa")
['aaaa', 'aaaa']

通过上面的例子,可以看到{m,n},正则表达式优先匹配n,而不是m,因为结果不是[“aa”,“aa”,“aa”,“aa”]

   >>> re.findall("a{2}","aaaaaaaa")
 ['aa', 'aa', 'aa', 'aa']

{m,n}? 用来表示前面正则表达式的m到n次copy,尝试匹配尽可能少的copy

>>> re.findall("a{2,4}?","aaaaaaaa")
['aa', 'aa', 'aa', 'aa']