三重引号的正则表达式

10 投票
5 回答
4345 浏览
提问于 2025-04-15 14:34

什么样的正则表达式可以找到Python源代码中的三重引号注释(可能是多行的)?

5 个回答

4

我发现这个方法对我来说非常有效(我在TextMate中使用的):

"{3}([\s\S]*?"{3})

我想从一个库中删除所有注释,这个方法可以处理三重引号的注释(无论是单行还是多行,且不管它们在行中的起始位置)。

对于井号注释(这要简单得多),可以使用这个方法:

#.*$

我在TextMate中使用了这些,它使用的是K. Kosako的Oniguruma正则表达式库(http://manual.macromates.com/en/regular_expressions)

5
re.findall('(?:\n[\t ]*)\"{3}(.*?)\"{3}', s, re.M | re.S)

这个代码只会抓取位于行首的三重引号中的文本,并且这些文本前面可以有空格、制表符或者什么都没有,就像Python的文档字符串那样。

11

Python 不是一种普通的语言,用正则表达式来解析它是不太可靠的。

如果你想要一个合适的 Python 解析器,可以看看 ast 模块。你可能在找 get_docstring 这个功能。

撰写回答