>>>> 前 言 我们在做接口自动化的时候,处理接口依赖的相关数据时,通常会使用正则表达式来进行提取相关的数据,今天在这边和大家聊聊如何在python中使用正则表达式。 正则表达式,又称正规表示式、正规表示法、正规表达式、规则表达式、常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE),是计算机科学的一个概念。 正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。按某种规则匹配的表达式被称之为正则表达式,在python使用正则表达式,可以使用官方库re来实现,学习re模块之前,我们先来了解一下正则表达式的基本语法。 >>>> 正 则 表 达 式 语 法 NO.1表示单字符 单字符:即表示一个单独的字符,比如匹配数字用\d ,匹配非数字使用\D,具体规则如下:
NO..2表示数量 如果要匹配某个字符多次,就可以在字符后面加上数量进行表示,具体规则如下:
NO.3表示边界
NO.4匹配分组
NO.5 贪婪模式 贪婪模式:Python里数量词默认是贪婪的,总是尝试匹配尽可能多的字符;如下案例:有一个字符串s,我们需要在字符串中匹配3个以上的数字,字符串中数字有8个,贪婪模式会尽可能匹配更多字符,3个以上,8个也是3个以上,那么这里匹配的结果就是8个数字。 非贪婪模式:总是尝试匹配尽可能少的字符,在'*','?','+','',后面加上?,可以关闭贪婪模式关闭贪婪模式之后,尽可能获取更少的,如下,只获取到最前面的3个数值(至少3个,非贪婪就是最前面的3个) >>>> r e 模 块 的 使 用 在python中使用正则表达式,需要用到re模块来进行操作,这边给大家介绍几个re模块中常用的方法。 No.1 re.match函数
No.2 re.search 方法
re.match与re.search的区别
No.3 findall 方法
注意:match 和 search 是匹配一个结果, findall 匹配处所有符合规则的结果。 No.4 sub 方法 替换字符串中的某些字符,可以用正则表达式来匹配被选子串。 re.sub(pattern, repl, string, count=0 )
>>>> 案 例 演 示 需求:整个正则表达式提取如下接口登录之后返回的token值。
实现代码import requestsimport re# 登录接口login_url = 'http://47.112.233.130:8888/users/login/'# 请求登录接口,进行登录params = { 'username': 'test', 'password': '123456'}response = requests.post(url=login_url, json=params)#使用正则表达式提取tokenresult = re.search(r'token':'(.+?)'',response.text)token = result.group(1) 上述案例中关于token的提取我们使用的是正则表达式,除了正则之外,进行数据提取还有很多方式可以实现,比如jsonpath,xpath等等。jsonpath只能在接口返回的是json格式数据的情况下使用,xpath适用于接口返回的是XML或者HTML时使用。 |
|