求正则表达式:提取文件描述并移除以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.
相关产品推荐
相关产品推荐

