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

求正则表达式:提取文件描述并移除以TODO开头的行

移除Python文档字符串中所有TODO开头的行

正则表达式方案

使用以下正则表达式(开启多行模式(Multiline)和点匹配换行模式(Dotall)),将匹配到的内容替换为空字符串:

(?<=r""".*?)(^\s*TODO:.*\n?)

规则说明

  • (?<=r""".*?):反向环视,确保匹配范围限定在r"""开头的文档字符串内部,.*?非贪婪匹配任意字符(含换行,因Dotall模式开启),避免误匹配文档字符串外的内容。
  • ^\s*TODO:.*\n?:匹配以任意空白字符(可选)开头、紧跟TODO:的整行内容,包含行尾换行符(可选,兼容最后一行无换行的场景)。
  • 多行模式让^/$匹配每行首尾;Dotall模式让.能匹配换行,保证反向环视可跨换行定位文档字符串起始。

Python示例用法

import re

original_code = '''r"""file description line one.

Further explanation 1.
Further explanation 2.

TODO: refactor 1.
TODO: refactor 2.

Further explanation 3. 
"""

import numpy as np
import pandas as pd
...'''

# 执行替换
processed_code = re.sub(r'(?<=r""".*?)(^\s*TODO:.*\n?)', '', original_code, flags=re.MULTILINE | re.DOTALL)

print(processed_code)

执行后输出结果符合需求:

r"""file description line one.

Further explanation 1.
Further explanation 2.


Further explanation 3. 
"""

import numpy as np
import pandas as pd
...

适配补充

若文档字符串无r前缀(普通字符串),只需将正则中的r"""替换为"""即可。该方案会保留TODO行前后的空行,完全匹配你的要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 11:06:48