You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python re模块替换字符串时保留括号内文本?

嘿,这个问题其实是没用到正则的捕获组功能啦!你之前的代码是把匹配到的整个(spam): 直接删掉了,自然留不住括号里的内容。咱们调整一下正则,把要保留的部分“抓”出来就行:

解决方法

核心思路是用捕获组把括号内的文本提取出来,然后在替换的时候引用这个捕获到的内容:

import re
# 使用原始字符串定义正则,避免转义字符的麻烦
result = re.sub(r'\((.+?)\): ', r' : \1 ', 'eggs (spam): tomatoes')
print(result)  # 输出: eggs : spam tomatoes

细节解释

  1. 正则表达式r'\((.+?)\): ':

    • \( 和 \):匹配实际的左右括号(因为括号在正则语法里是特殊字符,必须转义才能匹配字面量)
    • (.+?):这是第一个捕获组,+?是非贪婪匹配模式,会精准捕获括号里的文本(直到遇到第一个右括号就停止,避免出现过度匹配的问题)
    • : :匹配括号后面的冒号和空格,确保只替换符合你描述的完整模式
  2. 替换字符串r' : \1 ':

    • \1:专门用来引用第一个捕获组捕获到的内容(也就是括号里的spam)
    • 前后的空格和冒号完全对应你想要的目标格式

如果你的长字符串里有多个这种模式,比如foo (bar): baz (qux): quux,这个正则也能正确处理,最终会输出foo : bar baz : qux quux。

内容的提问来源于stack exchange,提问作者ignoring_gravity

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 10:09:40