Python正則表達式:只要整數和小數

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()的參數.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章