*
:匹配前一個字符出現0次或者無限次,便可有可無+
:匹配前一個字符出現1次或者無線次,即至少有1次?
:匹配前一個字符出現1次或者0次,即要麼有1次,要麼沒有{m}
:匹配前一個字符出現m次{m,n}
:匹配前一個字符出現從m到n次示例1: *
python
需求:匹配出,一個字符串第一個字母爲大小字符,後面都是小寫字母而且這些小寫字母無關緊要code
import re #注意是前一個字符 ret = re.match("[A-Z][a-z]*","M") print(ret.group()) ret = re.match("[A-Z][a-z]*","AaBcDE") print(ret.group()) ret = re.match("[A-Z][a-z]*","Aabcdef") print(ret.group()) #運行結果 M Aa Aabcdef
示例2:+
需求:匹配出,變量名是否有效字符串
import re names = ["name1","_name","2_name","__name__"] for i in names: ret = re.match("[a-zA-Z_]+[\w]*",i) if ret: print("變量名 %s 符合要求" % ret.group()) else: print("變量名 %s 非法" % i) #運行結果 變量名 name1 符合要求 變量名 _name 符合要求 變量名 2_name 非法 變量名 __name__ 符合要求
示例3:?
class
需求:匹配出0到99之間的數字import
import re ret = re.match("[1-9]?[0-9]","7") print(ret.group()) ret = re.match("[1-9]?\d","33") print(ret.group()) ret = re.match("[1-9]?\d","09") print(ret.group()) #運行結果 7 33 0 # 這個結果並非想要的,利用$才能解決
示例4:{m}
需求:匹配出,8到20位的密碼,能夠是大小寫英文字母、數字、下劃線變量
import re ret = re.match("[a-zA-Z0-9_]{6}","123a3g45678") print(ret.group()) ret = re.match("[[a-zA-Z0-9_]{8,20}","1ad3123456addfcasdef") print(ret.group()) #運行結果 123a3g 1ad3123456addfcasdef