Skip to main content
 首页 » 编程设计

python之如何在另一个搜索词中搜索和替换一个词

2025年05月04日13bluestorm

我有一个通过在 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)