【python接口自动化】- 正则用例参数化 (2)

​ 实例如下:

import re # 同时定义多个规则,只要满足其中一个 re31 = r"13566778899|13534563456|14788990000" res31 = re.findall(re31, "sas13566778899fgh13534563456jkghj14788990000") print(res31) # 运行结果:['13566778899', '13534563456', '14788990000'] # ():匹配分组:在匹配规则的数据中提取括号里的数据 re32 = r"aa(\d{3})bb" # 如何数据符合规则,结果只会取括号中的数据,即\d{3} res32 = re.findall(re32, "ggghjkaa123bbhhaa672bbjhjjaa@45bb") print(res32) # 运行结果:['123', '672'] 表示边界 字符 功能说明
^   匹配字符串开头,只能匹配开头  
$   匹配字符串结尾,只能匹配结尾  
\b   匹配一个单词的边界(单词:字母、数字、下划线)  
\B   匹配非单词的边界  

​ 实例如下:

import re # ^:匹配字符串的开头 re41 = r"^python" # 字符串开头为python res41 = re.findall(re41, "python999python") # 只会匹配这个字符串的开头 res411 = re.findall(re41, "1python999python") # 因为开头是1,第1位就不符合了 print(res41) # 运行结果:['python'] print(res411) # 运行结果:[] # $:匹配字符串的结尾 re42=r"python$" # 字符串以python结尾 res42 = re.findall(re42, "python999python") print(res42) # 运行结果:['python'] # \b:匹配单词的边界,单词即:字母、数字、下划线 re43 = r"\bpython" # 即匹配python,且python的前一位是不是单词 res43 = re.findall(re43, "1python 999 python") # 这里第1个python的前1位是单词,因此第1个是不符合的 print(res43) # 运行结果:['python'] # \B:匹配非单词的边界 re44 = r"\Bpython" # 即匹配python,且python的前一位是单词 res44 = re.findall(re44, "1python999python") print(res44) # 运行结果:['python', 'python'] 贪婪模式

​ python里数量词默认是贪婪的,总是尝试匹配尽可能多的字符,而非贪婪模式则是尝试匹配尽可能少的字符,在表示数量的表达式后加上问号(?)就可以关闭贪婪模式。

​ 如下例子,匹配2个以上的数字,如果符合条件它会一直匹配到不符合才停止,如其中的34656fya,34656符合2个数字以上,那么它会一直匹配到6为止,如果关闭贪婪模式,那么在满足2个数字时就会停止,最后可以匹配到34、65。

import re # 默认的贪婪模式下 test = 'aa123aaaa34656fyaa12a123d' res = re.findall(r'\d{2,}', test) print(res) # 运行结果:['123', '34656', '12', '123'] # 关闭贪婪模式 res2 = re.findall(r'\d{2,}?', test) print(res2) # 运行结果:['12', '34', '65', '12', '12'] re模块

​ 在python中使用正则表达式,就会用到re模块来进行操作,提供的方法一般需要传入两个参数:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyyxwy.html