在Visual Studio 2010中,如何搜索不在单行注释中的文本?

Ton*_*ony 8 regex search visual-studio-2010 visual-studio regex-negation

在Visual Studio 2010中,如何搜索不在单行注释中的文本?EG如何找到"bas":

foo bar bas
Run Code Online (Sandbox Code Playgroud)

但不是

foo bar // bas
Run Code Online (Sandbox Code Playgroud)

请注意,它应该找到该行:

foo / bar / bas
Run Code Online (Sandbox Code Playgroud)

(编辑)它不应该找到该行:

foo // bar bas
Run Code Online (Sandbox Code Playgroud)

Roc*_*oC5 6

在Visual Studio查找对话框中,尝试使用此正则表达式(确保在查找选项中选择使用:正则表达式):

~(//[.:b]*)<bas>
Run Code Online (Sandbox Code Playgroud)

这应该找到所有出现的单词bas之前没有的单词//.

请注意,Visual Studio正则表达式语法与传统语法略有不同.你可以在这里找到参考资料.

  • 对于VS2012用户:"Visual Studio 2012使用.NET Framework正则表达式来查找和替换文本.在Visual Studio 2010和早期版本中,Visual Studio在"查找和替换"窗口中使用自定义正则表达式语法".来源:[在Visual Studio中使用正则表达式](http://msdn.microsoft.com/en-us/library/2k3te2cs(v = vs.110).aspx) (5认同)

Ton*_*ony 6

好的,所以我问了这个问题,所以我可以回顾一下我自己的答案.

Visual Studio似乎没有典型的前瞻,后观构造.它确实有一个类似的零宽度否定断言.语法是〜(x),这意味着模式在模式中的这一点上不匹配x.使用这个结构,我提出了这个:^(.~(//))*bas哪个工作得很好,但不会排除//行是前两个字符的行.要修复的版本是:^~(//)(.~(//))*bas