如何编写正则表达式将三重引号包裹的文本替换为空字符串
用正则移除三重引号包裹的多行文本
要移除所有被"""或'''包裹的文本(包括引号本身),可以使用支持多行匹配的正则表达式,以下是具体实现:
正则表达式模式
(?s)(["'])\1\1.*?\1\1\1
模式解释:
(?s):启用DOTALL模式,让.能够匹配换行符(部分工具可省略,改用[\s\S]替代.)(["']):捕获组,匹配单个双引号或单引号\1\1:重复捕获到的引号两次,组成三重引号起始标记.*?:非贪婪匹配任意字符(包括换行),避免过度匹配多个引号块\1\1\1:匹配与起始标记一致的三重引号结束标记
Python 示例代码
import re raw_text = '''hello """ long text here, e.g. a private SSH key """ this is a name for testing ''' this is another multi-line stuff. ''' ''' # 执行替换 cleaned_text = re.sub(r'(?s)(["\'])\1\1.*?\1\1\1', '', raw_text) # 清理多余换行和空格,得到目标输出 print(cleaned_text.strip())
执行后输出:
hello this is a name for testing
其他工具适配(如VS Code查找替换)
如果工具不支持(?s),可以改用[\s\S]匹配所有字符,正则模式为:
(["'])\1\1[\s\S]*?\1\1\1
开启正则匹配模式后,将匹配到的内容替换为空即可。
内容的提问来源于stack exchange,提问作者crispengari
相关产品推荐
相关产品推荐

