2015-11-03 59 views
0

我在文件中有一组匹配项,并且想要找出哪些匹配项在注释中(/**/之间)。这是我能用正则表达式做的事吗?检查正则表达式匹配是否在多行注释中

我正在考虑/\*.*MATCH.*\*/,但是,这也符合/* comment */ MATCH /* some other comment */的情况。有没有一个正确的方法来做到这一点?

请注意,MATCH可以在文件内部发生多次(在注释中而不在注释内)。

回答

0

虽然previos lookahead-answer有效,但它不适用于文件中出现多个MATCH事件。因此,我发现了一个更好的非基于正则表达式的解决方案:

var lastCommentStartBefore = content.LastIndexOf("/*", match.Index); 
var lastCommentEndBefore = content.LastIndexOf("*/", match.Index); 
if (lastCommentEndBefore < lastCommentStartBefore) 
    // within comment 
+1

请在问题中附带相关代码。这是一个很糟糕的做法,不提供所有相关的细节,然后发布一个回答,其中包含一段不完整的代码。 –

+0

我添加了“MATCH”可以多次出现的细节。我不知道应该在问题中添加哪些代码。答案中的代码不完整...... –

+0

不完整?你在写什么语言? 'match'变量有什么类型?它是如何声明的?它有什么作用? –

0

这是因为.*是贪婪的,并会匹配尽可能多的字符可能。相反,尝试用懒惰匹配*?

\/\*[^\/\*]*?MATCH[^\/\*]*?(\*\/) 

这里是一个fiddle