Python正則表達式教程:字符串匹配多個字符

  • * :匹配前一個字符出現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
相關文章
相關標籤/搜索