我试图在代码中查找所有字符串,同时排除AssemblyInfo.cs文件,注释和XML内容等内容。
我提出了一个正则表达式,当我将它与 Ctrl + F 一起使用时,但是在尝试将它与&#34一起使用时;在文件中查找"对话框( Ctrl + Shift + F ),它提供任意结果,包括空行和仅包含例如空行的行。一个开口大括号{。
这是VS2013中的错误吗?遗憾的是,我没有其他版本可用于测试此行为。
这是正则表达式及其解释:
^[^\[/<]*\".*\"
^: Start of line
[^\[/<]*: Any amount of characters which are not [, / or <
\".*\": Any amount of characters enclosed by two quotation marks
当使用常规搜索( Ctrl + F )时,这会正确检测
之类的行 "This is a test"
someObject->doSomething("This is a test");
并且故意不检测如下行:
[assembly: AssemblyTitle("....")]
/// <param name="Test">Test</param>
然而,当我使用&#34;在文件中查找&#34;对话框,同一个表达式列出了一些方法的完整实现,包括只有大括号,类定义和空行的行。
我是否必须使用与文件中的查找不同的语法或任何内容,或者它是否不支持与在一个文件中搜索时相同的功能?
[编辑:] 请注意,省略[...]表达式可以在两个搜索对话框中按预期工作
[EDIT2:] VS版本是&#34; Microsoft Visual Studio Professional 2013,版本12.0.30723.00更新3&#34;
答案 0 :(得分:0)
与常规的“查找”对话框不同,正则表达式部分[^\[/<]*
显然与“在文件中查找”对话框中的换行符匹配。
问题可以通过在表达式的这一部分和引号之间明确排除\n
来解决:
Full Expression: ^[^\n\[/<]*"[^\n]*"
Visual Studio 2013可能不支持(?m)
修饰符,它似乎被忽略,至少在此示例中。