我有一个通过在 Python 中解析 swagger 的 api.json 文件获得的 url。
URL 看起来像这样,我想用下划线替换破折号,但只能在大括号内。
10.147.48.10:8285/pet-store-account/{pet-owner}/version/{pet-type-id}/pet-details-and-name
因此,{pet-owner} 将变为 {pet_owner},但 pet-store-account 将保持不变。
我正在寻找一个正则表达式,它允许我执行非贪婪搜索,然后对每个第一次搜索的结果进行搜索替换。
一种 Python re 方法是我正在寻找的,但如果你能推荐一个 Vim one liner,我也将不胜感激。
预期的最终结果是:
10.147.48.10:8285/pet-store-account/{pet_owner}/version/{pet_type_id}/pet-details-and-name
请您参考如下方法:
如果您希望所有“{...}” block 保持一致,您可以使用尾随上下文来确定给定破折号是否在 block 内,实际上只需要它后跟“...} ' 在哪里 '。'不是'{'
exp = re.compile(r'(?=[^{]*})-')
...
substituted_url = re.sub(exp,'_',url_string)
