我一直在尝试设计这个正则表达式,但在我的一生中,如果 */在特殊词之前被击中,我无法让它不匹配。
我试图匹配包含特殊词的整个多行注释。我尝试了负面前瞻/后视,但我不知道如何正确地做到这一点。
这是我目前所拥有的: (?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)并对它们运行字符串函数(
if "special"in comment...).
