我一直在尝试设计这个正则表达式,但在我的一生中,如果 */在特殊单词之前被击中,我无法让它不匹配。
仅当它包含特殊单词时,我才尝试匹配整个多行注释。我尝试了消极的前瞻/后瞻,但我不知道如何正确地做到这一点。
这是我到目前为止所拥有的:
(?s)(/\*.+?special.+?\*/)
我是接近还是严重偏离基地?我尝试包含 (?!\*/)
但未成功。
https://regex101.com/r/mD1nJ2/3
编辑:我删除了正则表达式的一些冗余部分。
最佳答案
你并没有完全偏离事实:
/\* # match /*
(?:(?!\*/)[\s\S])+? # match anything lazily, do not overrun */
special # match special
[\s\S]+? # match anything lazily afterwards
\*/ # match the closing */
该技术称为调和贪婪 token ,请参阅 a demo on regex101.com (注意修饰符,例如 x
表示详细模式!)。
您可能想尝试另一种方法:分析您的文档,grep 注释(使用例如
BeautifulSoup
)并对其运行字符串函数(如果注释中存在“特殊”...
)。
关于python - 正则表达式匹配包含特定单词的整个多行注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39652922/