python基础__re正则表达式
一、正则表达式可以实现匹配、查找、替换和格式化数据等操作。
1、模糊匹配_查找姓名和年龄
1 import re 2 3 Nameage = ''' 4 Janice is 22 and Theon is 33 5 Gabriel is 44 and Joey is 21 6 ''' 7 8 ages = re.findall(r'\d+', Nameage) #查找出字符串中所有数字 9 names = re.findall(r'[A-Z][a-z]*', Nameage) #找出以大写字母开头、小写字母其次、长度大于2的字符 10 11 ageDict = {} 12 for i in names: 13 ageDict[i] = ages[names.index(i)] 14 print(ageDict) #{'Janice': '22', 'Theon': '33', 'Gabriel': '44', 'Joey': '21'}
2、模糊匹配_匹配单个字符
1 import re 2 Str = "Sat, hat, mat, pat" 3 allStr = re.findall("[shmp]at", Str) 4 print(allStr) # ['hat', 'mat', 'pat']
3、模糊匹配_匹配一串字符范围
1 import re 2 Str = "Sat, hat, mat, pat" 3 allStr = re.findall("[a-h]at", Str) 4 print(allStr) # ['hat']
4、模糊匹配_反向匹配一串字符范围
1 import re 2 Str = "Sat, hat, mat, pat" 3 allStr = re.findall("[^a-h]at", Str) # ^表示反选 4 print(allStr) # ['Sat', 'mat', 'pat']
5、模糊匹配_获取字符串中数字个数
1 import re 2 randstr = "12345上山打老虎" 3 print("Matches:", len(re.findall("\d", randstr))) # Matches:5
6、group显示预期结果
1 import re 2 result=re.match("嫦娥\W号","嫦娥*号") #\W表示除[0-9a-zA-Z_]之外的字符 3 print(result) # 返回<re.Match object; span=(0, 4), match='嫦娥*号'> 4 a=result.group() 5 print(a) # 嫦娥*号
7、限定匹配长度
1 import re 2 result=re.search("嫦娥\d{2}号","嫦娥77号") # 长度取3的话,就会报错 3 print(result.group()) # 嫦娥77号
二、常用匹配符号
\d:表示一个十进制的数字 [0-9]
\d*:表示0个或多个数字
\d+:表示1个或多个数字
\d?:表示最多只能出现一个数字
\D:表示非数字
\w:表示一个 [0-9a-zA-Z_] 字符
\W:表示除[0-9a-zA-Z_]之外的字符
\s:表示一个空白字符(空格,tab,换页符等)
\S:表示一个非空白字符
三、re库方法大全
一个人的傲慢,多是来源于无知;真正见识过世界广阔的人,往往会“犹怜草木青”,谦卑的对待身边的每一个人。每个人都有自己“花开”的时节,也有自己“花败”的时节。只有在“花开”的时候,多结善缘,才能在“花败”的时候,平稳着陆。