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

如何用Python正则表达式仅移除特定格式的{}与?,保留其他括号

解决方案
  • 问题根源:你原来的正则'[{?}]'属于字符集合匹配,会把所有单独的{、?、}字符全部删除,这才导致$1?里的?和{23ru里的{被误删。
  • 正确思路:需要精准匹配完整的{单个字符?}结构,只删除这类整体,不改动其他位置的括号和问号。

修正后的代码:

import re
string = "aaaa{v?}a $1?{23ru{n?}kkkk"
# 匹配 {任意单个字符?} 的完整结构
pattern = r'\{.\?\}'
replace = ''

new_string = re.sub(pattern, replace, string) 
print(new_string)

运行结果:aaaava $1?{23runkkkk,完全符合预期。

如果需要支持**花括号内是任意内容(不止单个字符)但结尾是?**的情况(比如{abc?}),可以用更通用的正则:

pattern = r'\{.*?\?\}'

这里用.*?做非贪婪匹配,确保只匹配到最近的?}结尾的目标结构。

内容的提问来源于stack exchange,提问作者Mr.ML.Engineer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 21:40:23