Python正則表達式(2)---字符串匹配多個字符


  • Python正則表達式(2)---匹配多個字符
字符 功能
* 匹配前一個字符出現0次或者無限次,即可有可無
+ 匹配前一個字符出現1次或者無線次,即至少有1次
匹配前一個字符出現1次或者0次,即要么有1次,要么沒有
{m} 匹配前一個字符出現m次
{m,n} 匹配前一個字符出現從m到n次

 

 

 

 

 

 

 

 

 

 

 

 

    • 示例1: *
    • 需求:匹配出,一個字符串第一個字母為大小字符,后面都是小寫字母並且這些小寫字母可有可無
      • 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:?
    • 需求:匹配出0到99之間的數字
      • 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

         


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM