如何用Python正则处理嵌套括号,移除内层括号内的空格?
移除嵌套括号内层的空格
输入示例
; (Col1 Col2 (Col3 Col4 Col5) ) ; (113 (1 2 3) )
需求
将所有最内层括号中的空格全部移除,得到如下输出:
; (Col1 Col2 (Col3Col4Col5) ) ; (113 (123) )
解决方案
不用单独先匹配内层括号再处理,直接通过正则替换配合回调逻辑一步完成,以下是几种常见实现方式:
Python 实现
import re original_text = """; (Col1 Col2 (Col3 Col4 Col5) ) ; (113 (1 2 3) )""" def clean_inner_brackets(match): # 提取括号内内容并移除空格,重新拼接括号 inner_content = match.group(1).replace(" ", "") return f"({inner_content})" # 匹配所有不含嵌套的内层括号,执行替换 processed_text = re.sub(r"\(([^()]+)\)", clean_inner_brackets, original_text) print(processed_text)
JavaScript 实现
const originalText = `; (Col1 Col2 (Col3 Col4 Col5) ) ; (113 (1 2 3) )`; const processedText = originalText.replace(/\(([^()]+)\)/g, (match, inner) => { return `(${inner.replace(/\s+/g, '')})`; }); console.log(processedText);
文本编辑器(如VS Code)快速处理
如果无需写代码,可在VS Code中用正则替换完成:
- 打开查找替换面板(Ctrl+H),勾选「正则表达式」选项
- 查找框输入:
\(([^()]+)\) - 替换框输入:
(${replace($1, /\s+/g, '')}) - 点击「替换全部」即可完成处理
原理说明
正则\(([^()]+)\)专门匹配不含嵌套括号的最内层括号:
\(匹配左括号([^()]+)捕获括号内所有内容(排除其他括号,确保只命中最内层)\)匹配右括号
通过回调函数移除捕获内容中的所有空格,再重新拼接成括号格式,即可实现需求。
内容的提问来源于stack exchange,提问作者user24599509
相关产品推荐
相关产品推荐

