什麼正則表達式會在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