正则表达式匹配整个多行注释共享特殊词

时间:2016-09-23 05:01:14

标签: python regex

我一直在尝试设计这个正则表达式但是对于我的生活,如果* /在特殊词之前被击中,我就无法得到它。

我试图匹配整个多行注释,只要它包含一个特殊的单词。我尝试过负面的前瞻/后退,但我无法弄清楚如何正确地做到这一点。

这是我到目前为止所做的: (?s)(/\*.+?special.+?\*/)

我是靠近基地还是可怕的基地?我尝试包括(?!\*/)失败了。

https://regex101.com/r/mD1nJ2/3

编辑:我删除了正则表达式的一些冗余部分。

1 个答案:

答案 0 :(得分:2)

你并非完全偏离基地:

/\*                 # match /*
(?:(?!\*/)[\s\S])+? # match anything lazily, do not overrun */
special             # match special
[\s\S]+?            # match anything lazily afterwards
\*/                 # match the closing */

该技术称为驯化贪婪令牌,请参阅a demo on regex101.com(请注意修饰符,例如x以获取详细模式!)。

<小时/> 您可能希望尝试另一种方法:分析文档,grep注释(使用例如BeautifulSoup)并对它们运行字符串函数(if "special" in comment...)。