st ='{"id":"#id#","data":"#data#","message":"#message#"}'
pattern =r'#(.*?)#'
- findall匹配全部
st =re.findall(pattern,st)
运行结果
['id', 'data', 'message']
- search全文匹配
匹配返回一个match对象
st =re.search(pattern,st)
运行结果
<re.Match object; span=(7, 11), match='#id#'>
如果需要获取值,则需要group,例如:
st =re.search(pattern,st).group(1)
- sub替换参数
pattern:正则表达式,888:要替换的值,st:需要替换的字符串,数字1:表示只替换一次;0表示一次替换全部
st =re.sub(pattern,'888',st,1)
运行结果
{"id":"888","data":"#data#","message":"#message#"}
- 获取动态数据
class Context: id =123 data='{"a":123,"c":"xzy"}' message ='ok'
while re.findall(pattern,st): v =re.search(pattern,st).group(1) st =re.sub(pattern,str(getattr(Context,v)),st,1)
运行结果
print(st)
{"id":"123","data":"{"a":123,"c":"xzy"}","message":"ok"}