python自动化测试(7)--正则表达式
一、概念
二、匹配分类
1、单字符匹配
1 | . | 匹配除\n以外的任意字符 |
2 | \d | 匹配1个数字字符[0-9] |
3 | \D | 匹配一个非数字字符[^0-9] |
4 | \w | 匹配包括下划线的任何单词字符 |
5 | \W | 匹配任何非单词字符 |
2、多数量匹配
1 | * | 匹配0次或多次 |
2 | + | 匹配1次或多次 |
3 | ? | 匹配0次或1次 |
4 | {n} | 匹配n次 |
5 | {n,} | 匹配前一个字符至少n次 |
6 | {n,m} | 匹配前一个字符至少n次,至多m次 |
3、贪婪模式与非贪婪模式
(1)在时使用正则表达式进行匹配时,默认是贪婪模式
(2)贪婪模式是尽可能的匹配更长的字符
(3)非贪婪模式是尽可能匹配更短的字符,可以通过“?”将贪婪模式修改为非贪婪模式
【实例】
对于字符串“oooo”,"o+?"将匹配单个"o",而"o+"将匹配所有的"o"
4、多选项匹配
1 | | | 用于匹配多个规范,如x|y表示匹配x或者y |
2 | [xyz] | 表示匹配xyz中的任意字符 |
3 | [a-z] | 表示匹配a-z范围内的任意字符,包含a和z |
5、()匹配分组
主要用于将()内的字符匹配出来
【应用】
1 case = { 2 "method": "POST", 3 "url": "http://api.lemonban.com/futureloan/member/register", 4 "request_data": '{"mobile_phone": "#phone#", "pwd": "123456789", "type": 1, "reg_name": "#nick#"}' 5 } 6 res = re.findall("#(.*?)#",case["request_data"]) # 用于匹配以#开头、以#结尾的字符(非贪婪模式) 7 print(res)
此时匹配的结果为:
phone、nick