re正则表达式2
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
越是困难的事越要立即去做,这样收益才会最大!!!