1.“字符*” 匹配*前面的字符0次或者多次。
注意:是匹配*前一个字符,只能是*前一个字符多次打印出来。*前面其他的字符相当于前缀会打印出来,但是不会再匹配。
*前一个字符前面的其他字符里的首字符先遇到会直接停下来,不去寻找其他的字符。
print(re.search("rt*","rrtbbbbrbrbreyrtrr"))
# <_sre.SRE_Match object; span=(0, 1), match='r'>
print(re.findall("r*","tyrrreyrtrr"))
print(re.search("r*","ureyrtrr"))
# ['', '', 'rrr', '', '', 'r', '', 'rr', '']
# <_sre.SRE_Match object; span=(0, 0), match=''>
print(re.search("r*","rrrreyrtrr"))
# <_sre.SRE_Match object; span=(0, 4), match='rrrr'>
2.“ ” 匹配一个或多个字符。
print(re.search(". ","rbbbbrbrbreyrtrr")) #可以利用· 输出所有字符
print(re.search(".","rbbbbrbrbreyrtrr"))
print(re.search("b ","rbbbbrbrbreyrtrr"))
print(re.search("ab ","rbbabbrbrbreyrtrr"))
# <_sre.SRE_Match object; span=(0, 16), match='rbbbbrbrbreyrtrr'>
# <_sre.SRE_Match object; span=(0, 1), match='r'>
# <_sre.SRE_Match object; span=(1, 5), match='bbbb'>
# <_sre.SRE_Match object; span=(3, 6), match='abb'>
当 前面有多个字符时和 *区别,如下
print(re.search("ab ","rbbaaaabbrbrbreyrtrr")) #一直找到ab
print(re.search("ab*","rbbaaaabbrbrbreyrtrr")) #遇a即停
# <_sre.SRE_Match object; span=(6, 9), match='abb'>
# <_sre.SRE_Match object; span=(3, 4), match='a'>
3.“?” 匹配一次或0次
print(re.search("ab?","abbbaaaabbrbrbreyrtrr"))
# <_sre.SRE_Match object; span=(0, 2), match='ab'>
4.“字符{m}” 匹配前面的字符m次
print(re.search("[a-z]{2}","abbbaaaabbrbrbreyrtrr"))
# <_sre.SRE_Match object; span=(0, 2), match='ab'>
5.“{n-m}” 匹配前面的字符n-m次
print(re.search("[a-b]{2,5}","tabbvbtaaaabbrbrbreyrtrr"))
# <_sre.SRE_Match object; span=(1, 4), match='abb'>
6.“|” 或,满足其中一个即可匹配。
print(re.search("[a|A]lex","alex"))
print(re.search("[a|A]lex","Alex"))
# <_sre.SRE_Match object; span=(0, 4), match='alex'>
# <_sre.SRE_Match object; span=(0, 4), match='Alex'>
print(re.search("[a|A]{2}","aalaex")) #输出aa
更多专业前端知识,请上 【猿2048】www.mk2048.com