如何删除文本中首个左括号到对应右括号的全部内容(含括号)
可行实现方案
方案1:Python脚本(逻辑清晰,易自定义)
用括号深度计数的方法实现,不需要复杂正则,完美适配嵌套、跨多行场景,直接替换文件路径即可运行。
def remove_first_parenthesis_block(file_path): # 读取文件全部内容 with open(file_path, 'r', encoding='utf-8') as f: content = f.read() res = [] depth = 0 found_first_parenthesis = False for char in content: if depth == 0: # 还没遇到第一个左括号,直接保留字符 if char == '(' and not found_first_parenthesis: depth += 1 found_first_parenthesis = True else: res.append(char) else: # 已经进入括号范围,根据括号深度判断是否停止丢弃 if char == '(': depth += 1 elif char == ')': depth -= 1 # 写回处理后的内容 with open(file_path, 'w', encoding='utf-8') as f: f.write(''.join(res)) # 替换成你的目标文件路径即可调用 remove_first_parenthesis_block('textfile1.txt')
效果验证
- 输入
logging.info(text text text(text text) text text)→ 输出logging.info - 输入跨多行内容:
→ 输出测试(文本 文本内容(文本内容) 文本内容)结束测试结束
方案2:Perl单行命令(适合批量快速处理)
直接执行以下命令即可原地修改文件,自动适配嵌套、跨多行的括号场景:
perl -0777 -i -pe 's/\((?:[^()]++|(?R))*\)//' 你的目标文件名
注:
-0777参数表示一次性读取整个文件,适配跨多行场景,内置递归正则自动匹配对应闭合括号,无需手动处理嵌套逻辑
内容的提问来源于stack exchange,提问作者Mermaid Man
相关产品推荐
相关产品推荐

