正則匹配多個字符


匹配多個字符的相關格式

字符 功能
* 匹配前一個字符出現0次或者無限次,即可有可無
+ 匹配前一個字符出現1次或者無限次,即至少有1次
? 匹配前一個字符出現1次或者0次,即要么有1次,要么沒有
{m} 匹配前一個字符出現m次
{m,n} 匹配前一個字符出現從m到n次

示例1:*

需求:匹配出,一個字符串第一個字母為大小字符,后面都是小寫字母並且這些小寫字母可有可無

#coding=utf-8 import re ret = re.match("[A-Z][a-z]*","M") print(ret.group()) ret = re.match("[A-Z][a-z]*","MnnM") print(ret.group()) ret = re.match("[A-Z][a-z]*","Aabcdef") print(ret.group()) 

運行結果:

M
Mnn
Aabcdef

示例2:+

需求:匹配出,變量名是否有效

#coding=utf-8 import re names = ["name1", "_name", "2_name", "__name__"] for name in names: ret = re.match("[a-zA-Z_]+[\w]*",name) if ret: print("變量名 %s 符合要求" % ret.group()) else: print("變量名 %s 非法" % name) 

運行結果:

變量名 name1 符合要求
變量名 _name 符合要求
變量名 2_name 非法 變量名 __name__ 符合要求 

示例3:?

需求:匹配出,0到99之間的數字

#coding=utf-8 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位的密碼,可以是大小寫英文字母、數字、下划線

#coding=utf-8 import re ret = re.match("[a-zA-Z0-9_]{6}","12a3g45678") print(ret.group()) ret = re.match("[a-zA-Z0-9_]{8,20}","1ad12f23s34455ff66") print(ret.group()) 

運行結果:


12a3g4 1ad12f23s34455ff66


免責聲明!

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



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