[英]Python 3 regular expression to find multiline comment
我正在嘗試使用 Python 中的正則表達式在 PHP 源代碼中查找注釋塊 3. PHP 注釋采用以下格式:
/**
* This is a very short block comment
*/
現在我想出了以下正則表達式:
'/\*\*[.]+?\*/'
我認為 - 結合 DOTALL 標志 - 應該這樣做,但不是。 它什么也沒找到。 奇怪的是,當我刪除尾部斜杠時,如下所示:
'/\*\*[.]+?\*'
然后它會找到以下字符串:
/**\n\t*
我不知道為什么正則表達式找不到星號后跟斜杠...我檢查了我正在搜索的文件以仔細檢查我在評論中沒有錯字(我沒有)。 斜杠在正則表達式中也不是特殊字符,所以我不必轉義它。 (我試過了,但沒有幫助。)
誰能告訴我我的正則表達式有什么問題? :)
順便說一句,我也遇到了這個。 有人試圖在 Java 中做同樣的事情的線程,最終的獲勝答案以我現在的方式完成了他的正則表達式:所以我一無所知?(這可能是 Python 正則表達式中的錯誤還是我完全錯過了什么?
非常感謝任何幫助::D
您可以使用re.DOTALL
標志來制作.
字符匹配換行符:
re.compile(r'/\*\*.+?\*/', re.DOTALL)
(附帶說明,PHP 塊注釋可以以/*
開頭,而不僅僅是/**
。)
嘗試這個:
r'\/\*\*[^*]*\*+([^/][^*]*\*+)*\/'
(這是一些 CSS 解析器用於/* CSS comments */
的正則表達式,所以我相信它非常可靠)
它與包括換行符和內部星號在內的確切格式不匹配,但您可以解決它。 這將匹配:
/**
* This is a very short block comment
*/
但是也:
/** This is a very short block comment */
乃至:
/** This is a very short block comment
*/
要匹配文檔塊的確切格式,您需要一個真正的解析器,而不是正則表達式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.