lun*_*oko 3 python regex comments python-3.x
我正在尝试使用 Python 3 中的正则表达式在 PHP 源代码中查找注释块。PHP 注释采用以下格式:
/**
* This is a very short block comment
*/
Run Code Online (Sandbox Code Playgroud)
现在我想出了以下正则表达式:
'/\*\*[.]+?\*/'
Run Code Online (Sandbox Code Playgroud)
我认为 - 与 DOTALL 标志结合 - 应该可以做到这一点,但没有。它没有找到任何东西。奇怪的是,当我删除尾部斜杠时,如下所示:
'/\*\*[.]+?\*'
Run Code Online (Sandbox Code Playgroud)
然后它找到以下字符串:
/**\n\t*
Run Code Online (Sandbox Code Playgroud)
我不知道为什么正则表达式找不到星号后跟斜杠...我检查了我正在搜索的文件以仔细检查我的评论中没有拼写错误(我没有)。另外,斜杠在正则表达式中不是特殊字符,所以我不必转义它。(我尝试过,但没有帮助。)
谁能告诉我我的正则表达式有什么问题吗?:)
顺便说一句,我也遇到过这个!有人试图在 Java 中做同样的事情的线程。最终的获胜答案以我现在的方式完成了他的正则表达式,所以我一无所知:(这可能是Python正则表达式中的一个错误还是我完全错过了一些东西?
任何帮助深表感谢!:D
您可以使用该re.DOTALL标志使.字符匹配换行符:
re.compile(r'/\*\*.+?\*/', re.DOTALL)
Run Code Online (Sandbox Code Playgroud)
(顺便说一句,PHP 块注释可以以 开头/*,而不仅仅是/**。)