regex101
这个网站支持写正则的时候,匹配文本内容高亮显示,真心不错!
关于正则表达式的语法示例
learn-regex/README-cn.md at master · ziishaned/learn-regex · GitHub
匹配返回的json数据里面的token
示例文本
'token': 'sfdshbGciOiJIUzI1NiJ9.eyJzwefwefMzkxOTgsImV4cCI6MTY1NjI0Mzk5OH0.5Y8HoH8aTl8PbBj9nEIcDBMehieDaaV7QTrQKxd-kcY'
{'code': 0, 'data': {'head_img': 'test', 'name': 'dasdadasd111', 'token': 'sdfGciOiJIUzI1NiJ9.eyJzwefwefMzkxOTgsImV4cCI6MTY1NjI0Mzk5OH0.5Y8HoH8aTl8PbBj9nEIcDBMehieDaaV7QTrQKxd-kcY'}, 'msg': None}
{'code': 0, 'data': {'token': 'sfsseyJhbGciOiJIUzI1NiJ9.eyJzwefwefMzkxOTgsImV4cCI6MTY1NjI0Mzk5OH0.5Y8HoH8aTl8PbBj9nEIcDBMehieDaaV7QTrQKxd-kcY','head_img': 'test', 'name': 'dasdadasd111', }, 'msg': None}
{'code': 0, 'data': {'head_img': 'test','token': 'sfsJIUzI1NiJ9.eyJzwefwefMzkxOTgsImV4cCI6MTY1NjI0Mzk5OH0.5Y8HoH8aTl8PbBj9nEIcDBMehieDaaV7QTrQKxd-kcY','name': 'dasdadasd111', }, 'msg': None}
{'code': 0, 'data': {'head_img':{'token': 'sdfdssUzI1NiJ9.eyJzwefwefMzkxOTgsImV4cCI6MTY1NjI0Mzk5OH0.5Y8HoH8aTl8PbBj9nEIcDBMehieDaaV7QTrQKxd-kcY'},'name': 'dasdadasd111'}, 'msg': None}
{'code': 0, 'data': {'head_img':{'data':{'token': 'sfsfsfJ9.eyJzwefwefMzkxOTgsImV4cCI6MTY1NjI0Mzk5OH0.5Y8HoH8aTl8PbBj9nEIcDBMehieDaaV7QTrQKxd-kcY'}},'name': 'dasdadasd111'}, 'msg': None}
# 你用的是贪婪匹配.*,就是尽可能多的长的去匹配 # 应该用非贪婪匹配.*?,就是尽可能少的短的去匹配
提取token的正则表达式:
'token':'*.*?'.*?'
python 代码
import re
import json
# 要提取的响应内容文本
s ="{'code': 0, 'data': {'head_img': 'test.jpg', 'name': 'dasdadasd111', 'token': 'fsfsdwYy1pbWcub3NzLWNuLWJlaWppbmcuYWxpeXVuY3MuY29tL3hkY2xhc3NfcHJvL2RlZmF1bHQvaGVhZF9pbWcvMjEuanBlZyIsImlkIjo2NzUwMjIsIm5hbWUiOiJkYXNkYWRhc2QxMTEiLCJpYXQiOjE2NTU2MzkxOTgsImV4cCI6MTY1NjI0Mzk5OH0.5Y8HoH8aTl8PbBj9nEIcDBMehieDaaV7QTrQKxd-kcY'}, 'msg': None}"
# 利用re.findall 正则表达式匹配文本内容
str_re = re.findall(r"'token':'*.*?'.*?'",s)
# 匹配返回的是一个list
print(str_re)
# 这里做下str转换,感觉没必要...
str_data = str(str_re[0])
print(str_data)
# 因为json只支持双引号,所以这里需要做下替换
json_data = str_data.replace("'", '"')
print(json_data)
# 这里继续做下拼接处理,因为我们匹配的token是没有花括号的
json_data = "{"+json_data+"}"
print(json_data)
# 这里利用json的loads方法把str转换成字典
js = json.loads(json_data)
print(type(js))