匹配包含特定单词的评论

时间:2009-12-10 17:36:49

标签: regex

我希望匹配包含特定字词的多行注释,例如findthis。我想到的第一个模式是\/\*.*?findthis.*?\*\/(使用DOTALL)。然而,这种模式的问题是像这样的字符串:

/* this is a comment */
this is some text
/* this is a findthis comment */

将匹配整个文本。基本上,在较大的文件上,第一个匹配将包含从第一个评论到包含findthis的第一个评论的所有内容。我该如何防止这种情况?

2 个答案:

答案 0 :(得分:2)

好吧,您可以将正则表达式更改为\/\*([^*]|\*+[^/*])*findthis([^*]|\*+[^/*])*\*+\/ ...

要完全正确,您必须完全标记化源代码。否则你的正则表达式会被字符串中的类似注释的内容所欺骗(在其他奇怪的角落案例中)。

(疯狂正则表达式的解释:([^*]|\*+[^/*])匹配评论内部的一小部分,但绝不匹配*/的全部或部分内容。)

答案 1 :(得分:0)

我认为这应该可以解决问题:

/\/\*.*?findthis.*?\*\//。的?在.*?部分意味着不合适。通过这种方式,注释可以包含*和/ chars,但不能包含* /(注释的结尾)