三重引号的正则表达式
什么样的正则表达式可以找到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
这个功能。