我在文件中有一组匹配项,并且想要找出哪些匹配项在注释中(/*
和*/
之间)。这是我能用正则表达式做的事吗?检查正则表达式匹配是否在多行注释中
我正在考虑/\*.*MATCH.*\*/
,但是,这也符合/* comment */ MATCH /* some other comment */
的情况。有没有一个正确的方法来做到这一点?
请注意,MATCH
可以在文件内部发生多次(在注释中而不在注释内)。
我在文件中有一组匹配项,并且想要找出哪些匹配项在注释中(/*
和*/
之间)。这是我能用正则表达式做的事吗?检查正则表达式匹配是否在多行注释中
我正在考虑/\*.*MATCH.*\*/
,但是,这也符合/* comment */ MATCH /* some other comment */
的情况。有没有一个正确的方法来做到这一点?
请注意,MATCH
可以在文件内部发生多次(在注释中而不在注释内)。
虽然previos lookahead-answer有效,但它不适用于文件中出现多个MATCH事件。因此,我发现了一个更好的非基于正则表达式的解决方案:
var lastCommentStartBefore = content.LastIndexOf("/*", match.Index);
var lastCommentEndBefore = content.LastIndexOf("*/", match.Index);
if (lastCommentEndBefore < lastCommentStartBefore)
// within comment
\/\*(?:(?!\/\*|\*\/)[\s\S])*\bMATCH\b(?:(?!\/\*|\*\/)[\s\S])*\*\/
您可以使用基于lookahead
正则表达式here.See演示。
请在问题中附带相关代码。这是一个很糟糕的做法,不提供所有相关的细节,然后发布一个回答,其中包含一段不完整的代码。 –
我添加了“MATCH”可以多次出现的细节。我不知道应该在问题中添加哪些代码。答案中的代码不完整...... –
不完整?你在写什么语言? 'match'变量有什么类型?它是如何声明的?它有什么作用? –