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

如何去除字符串多余空白,仅保留{}与""内的空白?

解决方案:保留指定区域内的空白并删除其余空白

需求1:仅保留{}内部的空白

输入

"  word=       {his or her}      whatever  "

目标输出

"word={his or her}whatever"

实现代码

import re

input_str = "  word=       {his or her}      whatever  "
output_str = re.sub(r'\s+(?![^{]*})', '', input_str)
print(output_str)

正则解释

  • \s+:匹配一个或多个空白字符(空格、制表符等)
  • (?![^{]*}):负向预查,用来排除{}内部的空白。意思是:如果当前空白的后面,在遇到}之前没有出现{,就不匹配这个空白——换句话说,只有空白不在{}包裹的区域内时,才会被匹配并删除。

需求2:同时保留{}和""内部的空白

输入

"  word=       {his or her} and "his or her"      whatever  "

目标输出

"word={his or her}and"his or her"whatever"

修改后的正则及代码

import re

input_str = '  word=       {his or her} and "his or her"      whatever  '
output_str = re.sub(r'\s+(?![^{]*})(?![^"]*"(?![^"]*"))', '', input_str)
print(output_str)

正则解释

在原有正则基础上,新增了(?![^"]*"(?![^"]*"))这个负向预查,用来排除""内部的空白:

  • 这个预查的逻辑是:如果当前空白的后面,先出现一个",且这个"之后没有对应的闭合",就不匹配这个空白——也就是仅当空白不在一对""包裹的区域内时,才会被匹配并删除。
  • 两个预查条件同时生效,就能同时保留{}和""内部的空白,删除其他所有空白。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 19:10:17