Python自动化测试中正则表达式提取数据实战指南

追风的人
追风的人
发布时间:2026-10-13 | 3人浏览过
原创

本文详细介绍Python中利用re模块进行接口自动化数据提取的方法。涵盖正则表达式基础语法、贪婪与非贪婪模式、re.match与re.search区别,以及findall和sub函数的实际应用。通过登录接口提取Token的完整案例,帮助开发者掌握高效的数据解析技巧。

前言

在接口自动化测试过程中,处理接口依赖数据时,正则表达式是提取关键信息的常用工具。本文将深入探讨如何在Python中高效运用正则表达式进行数据提取。

正则表达式(Regular Expression,代码中常简写为regex、regexp或RE),又称正规表示式、规则表达式等,是计算机科学中用于描述字符串模式的重要概念。

它利用单个字符串来定义并匹配符合特定句法规则的字符串集合。在Python中,官方提供了re模块来支持正则表达式的操作。在深入学习re模块之前,我们需要先掌握正则表达式的基本语法结构。

正则表达式语法

单字符匹配

单字符指代一个独立的字符单元。例如,使用\d匹配任意数字,使用\D匹配非数字字符。具体的匹配规则如下表所示:

数量词匹配

若需匹配某个字符出现多次,可在字符后添加数量词来限定次数。具体规则如下表所示:

边界匹配

分组匹配

贪婪模式

在Python中,数量词默认采用贪婪模式,即尝试匹配尽可能多的字符。

举例说明:假设字符串s中包含8个数字,我们需要匹配其中3个以上的数字。由于贪婪模式会尽可能多地匹配字符,因此结果将匹配全部8个数字,因为8个数字也满足“3个以上”的条件。

非贪婪模式:旨在匹配尽可能少的字符。在“*”、“?”、“+”或“\”后添加“?”即可关闭贪婪模式,转为非贪婪匹配。

关闭贪婪模式后,匹配器将尽可能获取最少的结果。例如,在至少匹配3个数字的要求下,非贪婪模式只会返回最前面的3个数值。

re模块的使用

在Python中操作正则表达式需导入re模块。以下介绍re模块中几个常用方法的具体用法。

No.1 re.match函数

参数说明:该函数接收两个主要参数,

第一个参数为匹配规则(正则表达式),

第二个参数为目标字符串。

re.match尝试从字符串的起始位置进行匹配。若匹配成功,返回一个包含匹配信息的匹配对象;若起始位置不匹配,则返回None。

No.2 re.search方法

参数说明:同样接收两个参数,

第一个参数为匹配规则,

第二个参数为目标字符串。

re.search会扫描整个字符串,并返回第一个成功匹配的匹配对象。

re.match与re.search的区别:

re.match仅从字符串起始位置开始匹配,若起始部分不符合正则表达式,则匹配失败并返回None;而re.search会扫描整个字符串,直到找到第一个成功匹配的位置并返回结果,若全字符串无匹配则返回None。

No.3 findall方法

参数说明:接收两个参数,

第一个参数为匹配规则,

第二个参数为目标字符串。

该方法在字符串中查找所有符合正则表达式的子串,并返回一个列表。若未找到匹配项,则返回空列表。

注意:match和search仅返回第一个匹配结果,而findall返回所有符合规则的匹配结果列表。

No.4 sub方法

sub方法用于替换字符串中的特定字符,可通过正则表达式匹配目标子串进行替换。

re.sub(pattern, repl, string, count=0 )

参数说明:

pattern:定义匹配规则的正则表达式;

repl:匹配成功后替换的新字符串内容;

string:需要执行替换操作的原始字符串;

count:指定替换次数,若不传参则默认替换所有符合规则的子串。

案例演示

需求:利用正则表达式从接口登录返回的数据中提取Token值。

接口地址:http://47.112.233.130/users/login/ 请求参数: 返回结果:

{'refresh': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0b2tlbl90eXBlIjoicmVmcmVzaCIsImV4cCI6MTY1Mzk4MzMyNSwiaWF0IjoxNjUzODk2OTI1LCJqdGkiOiI2NTE2MTE0OGFhMDY0NWNjYWY2ZWE4YmYzYzY1YjE1ZSIsInVzZXJfaWQiOjJ9.fMkJfOdhczbr1MqvYE5b0qYlC5GewBlFZbrteMOLUv0', 'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNjUzOTgzMzI1LCJpYXQiOjE2NTM4OTY5MjUsImp0aSI6ImQ3Nzg1ZjY0YTk2YzQwYzliZDcwMmUxMDgzNjVkNWU5IiwidXNlcl9pZCI6Mn0.UNmLRQsXnZBltgL7QQVuBON2UEBQav87NSGy5Iqbnws'}

实现代码

import requests
import re
# 登录接口
login_url = 'http://47.112.233.130:8888/users/login/'


# 请求登录接口,进行登录
params = {
    "username": "test",
    "password": "123456"
}
response = requests.post(url=login_url, json=params)
#使用正则表达式提取token
result = re.search(r'token":"(.+?)"',response.text)
token = result.group(1)

到此这篇关于Python自动化数据提取之正则表达式的文章就介绍到这了,更多相关Python数据提取正则表达式内容请搜索本站以前的文章或继续浏览下面的相关文章,希望大家以后多多支持本站!

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表