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

如何用正则表达式一次性移除三重引号间的所有换行符(\n)

正则表达式一次性移除三重引号间的所有换行符

解决方案代码

import re

text = '''
'''
           <html>
         <body>
           <p>Your file successfully uploaded</p>
         </body>
       </html>
       '''
'''

# 一次性完成匹配与替换
processed_text = re.sub(r"(''')([\s\S]*?)(''')", lambda match: match.group(1) + match.group(2).replace('\n', '') + match.group(3), text)
print(processed_text)

正则说明

  • ('''):捕获开头的三重引号,作为替换后的前缀
  • ([\s\S]*?):非贪婪匹配三重引号之间的所有内容([\s\S]匹配任意字符,包括换行;*?避免匹配到后续的三重引号)
  • ('''):捕获结尾的三重引号,作为替换后的后缀
  • 替换逻辑:通过lambda函数将中间捕获到的内容中的所有\n移除,再拼接开头、处理后的中间内容、结尾三重引号

原尝试正则的问题

你之前用的re.findall('(?<=\'\'\').+(\\n)+[^\\n]+(?=\'\'\')', text, re.DOTALL)存在两个局限:

  1. +.+(\\n)+[^\\n]+只能匹配包含单个换行的片段,无法覆盖所有连续或分散的换行
  2. 贪婪模式的+可能会跳过部分内容,无法完整匹配三重引号之间的全部区域

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 01:57:59