python - 正则表达式匹配包含特定单词的整个多行注释

标签 python regex

我一直在尝试设计这个正则表达式,但在我的一生中,如果 */在特殊单词之前被击中,我无法让它不匹配。

仅当它包含特殊单词时,我才尝试匹配整个多行注释。我尝试了消极的前瞻/后瞻,但我不知道如何正确地做到这一点。

这是我到目前为止所拥有的: (?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/

相关文章:

python - pandas中groupby一列后如何在不同列之间进行操作?

c++ - boost 正则表达式不匹配?

python - 在 numpy 数组中查找唯一点

javascript - 拆分以@符号开头的多个单词

javascript - 在 Javascript 正则表达式中不匹配 )

sql - 正则表达式删除字符串中单词之间的空格

python - 正则表达式捕获组的可选顺序

python - 如何分配给非字符串 "name"或索引的列?

python - 为什么Python不调用模块中的函数?

python - 使用查找方法(xml.etree.ElementTree)后获取父元素