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

8
在Visual Studio 2010中,如何搜索不在单行注释中的文本?例如,在以下文本中查找“bas”:
foo bar bas

但不在其中
foo bar // bas

请注意,它应该找到这一行:
foo / bar / bas

(编辑)它不应该找到以下行:
foo // bar bas

好的,我问了这个问题只是为了以后可以参考我的答案。不幸的是,我必须等待8个小时才能回答自己的问题。Visual Studio似乎没有典型的前瞻、后顾结构。它确实有一个类似的零宽度负断言。语法是~(x),表示模式在此处不匹配x。使用这个构造,我想出了这个:^(.~(//))*bas这个很好用,但是不能匹配以//开头的行。修复这个问题的版本是:^(//)(.(//))*bas - Tony
你是问问题只为了自己回答吗? - iandotkelly
那么,你发表那条评论是因为我已经回答了你的问题吗? :) - Tony
2个回答

6

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

~(//[.:b]*)<bas>

这应该会找到所有不是以 // 开头的单词 bas 的出现。

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


这个例子中不起作用:foo // bar / bas,其中bas在注释中,因此不应被找到。谢谢回答和提供链接。此外,“<”和“>”单词边界可能不是必需的,尽管这取决于您想要什么。 - Tony
5
针对 VS2012 用户:Visual Studio 2012 使用 .NET Framework 正则表达式来查找和替换文本。在 Visual Studio 2010 及更早版本中,Visual Studio 在“查找和替换”窗口中使用自定义的正则表达式语法。来源:在 Visual Studio 中使用正则表达式 - tranquil tarn

6

好的,我问了这个问题只是为了能够参考自己的答案。

Visual Studio似乎没有典型的向前、向后查找结构。它确实有类似的零宽度负断言。语法是~(x),这意味着该模式在此处不匹配x。使用这个结构,我想出了这个:^(.~(//))*bas 这个很好用,但不会排除以//开头的行。修复这个问题的版本是:^~(//)(.~(//))*bas


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接