什么正则表达式会在Python源代码中找到三重引用注释(可能是多行)?三重报价正则表达式
回答
Python不是一种常规语言,不能可靠地使用正则表达式进行解析。
如果您想要一个合适的Python解析器,请查看ast模块。您可能正在寻找get_docstring
。
re.findall('(?:\n[\t ]*)\"{3}(.*?)\"{3}', s, re.M | re.S)
捕捉三重引号是在一行的乞讨,并可以通过空格,制表符或没有前面,如蟒蛇文档字符串应该是内只有文字。
单引号怎么办? – Triptych 2009-09-24 14:42:13
以及如何:'a ='“”“”不是一个真正的三重报价“”“”'' – Triptych 2009-09-24 14:45:04
为什么它不是一个真正的三重报价?格式化中有些东西丢失了吗? – SilentGhost 2009-09-24 14:46:14
我发现这个从蒂姆·彼得斯(我认为):
pat = """
qqq
[^\\q]*
(
( \\\\[\000-\377]
| q
( \\\\[\000-\377]
| [^\\q]
| q
( \\\\[\000-\377]
| [^\\q]
)
)
)
[^\\q]*
)*
qqq
"""
pat = ''.join(pat.split(), '')
tripleQuotePat = pat.replace("q", "'") + "|" + pat.replace('q', '"')
但是,正如bobince说,正则表达式本身并似乎不是解析Python代码的工具。
所以我从标准化从标准库去。
最后,我使用** pygments **(http :// Pygments来做。org /) – dugres 2010-01-19 17:33:07
我觉得这是完美的我(对TextMate用它)工作:
"{3}([\s\S]*?"{3})
我想从库中删除所有的评论和这个照顾了三重报价评论(单层或多层无论他们从哪里开始)。
哈希评论(很容易),这个工程:
#.*$
我用这对TextMate,它通过K. Kosako使用Oniguruma正则表达式库(http://manual.macromates.com/ en/regular_expressions)
请注意,弱重复('*?')对于匹配一个triqle引用的字符串是可靠的,但如果您从中构建更大的模式会有风险。例如。 '\('“”[\ s \ S] *?“”“\)'并不意味着括号中有一个三重引号的字符串 - 它也会匹配'(”“”1st string“”“whatever ...”“ “第二个字符串”“”)'。 – 2015-12-19 21:42:14
- 1. 正则表达式来获得报价
- 2. 正则表达式中的“报价”
- 3. 正则表达式查找报价
- 4. 正则表达式不匹配报价
- 5. 股票报价正则表达式
- 6. 正则表达式的报价
- 7. 正则表达式匹配报价
- 8. VIM的正则表达式的报价
- 9. Javascript正则表达式报价
- 10. 正则表达式用于报价
- 11. 正则表达式匹配报价
- 12. 红宝石报价正则表达式
- 13. 正则表达式:发现和报价
- 14. 正则表达式PHP:一套报价
- 15. 支架内的正则表达式匹配的正则表达式的报价
- 16. 正则表达式价格
- 17. 三重报价
- 18. 的.htaccess重写正则表达式的正则表达式
- 19. 重叠正则表达式
- 20. 正则表达式重音
- 21. 正则表达式重复
- 22. 重叠正则表达式
- 23. 正则表达式重复
- 24. 正则表达式来捕捉多行报价
- 25. 正则表达式的文件名与多部分报价
- 26. 正则表达式把报价HTML属性
- 27. 使用正则表达式删除所有报价
- 28. Python的正则表达式匹配报价
- 29. 正则表达式忽略除了报价
- 30. 正则表达式帮助匹配报价
+1:使用正则表达式的问题没有有效的解决方案,只有半工作的黑客 – nosklo 2009-09-24 16:30:52
我相信正则表达式足够强大,可以做到这一点,但是为这样的任务构造适当的正则表达式是很难,所以使用内置的Python解析器是更可靠的解决方案。 – 2009-09-25 08:16:06
你有链接吗?'不能可靠地使用正则表达式解析'W这些语言可以吗? – u0b34a0f6ae 2009-09-25 09:15:37