zl程序教程

您现在的位置是:首页 >  Python

当前栏目

python基础__re正则表达式

2023-03-14 09:51:09 时间

一、正则表达式可以实现匹配、查找、替换和格式化数据等操作。

 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库方法大全

 

 

 

 

 

一个人的傲慢,多是来源于无知;真正见识过世界广阔的人,往往会“犹怜草木青”,谦卑的对待身边的每一个人。每个人都有自己“花开”的时节,也有自己“花败”的时节。只有在“花开”的时候,多结善缘,才能在“花败”的时候,平稳着陆。