def isNumReg(str):
regInt='\d+'#能匹配123、123.63、123eabd、abc236等所有包含了數字的字符串
regInt2='\d+$'#能匹配123、123.63、abc236等所有以數字結尾的字符串
regInt2='^\d+$'#只能匹配1、12、123等只包含數字的字符串
regFloat='\d+\.\d+'#能12.36、efa56.63、wwe56.56abc等字符串
regFloat2='^\d+\.\d+$'#能匹配2.36、0.36、00069.63、0.0、263.25等
#以下是整數和小數正確的正則表達式
regInt='^0$|^[1-9]\d*$'#不接受09這樣的爲整數
regFloat='^0\.\d+$|^[1-9]\d*\.\d+$'
#接受0.00、0.360這樣的爲小數,不接受00.36,思路:若整數位爲零,小數位可爲任意整數,但小數位數至少爲1位,若整數位爲自然數打頭,後面可添加任意多個整數,小數位至少1位
regIntOrFloat=regInt+'|'+regFloat#整數或小數
patternIntOrFloat=re.compile(regIntOrFloat)#創建pattern對象,以便後續可以複用
if patternIntOrFloat.search(str):
return True
if re.search(patternIntOrFloat,str):
return True
if re.search(regIntOrFloat,str):
return True
else:
return False
if __name__=='__main__':
print isNumReg("0.360")#True
第2-6行說明開始符號(^)和結束($)的作用.
第9行、第13行說明了正則表達式中“或者”的表示方法爲一條豎線(’|’)
第16行、第18行、第20行三者相互等價,即可以用pattern對象的search方法,也可以將pattern對象作爲re.search()的參數,也可以將模式字符串作爲re.search()的參數.