首页 > 解决方案 > 如何使用正则表达式仅在字符串内部搜索(在双引号之间)

问题描述

这是一个非常基本的正则表达式问题。

假设我的代码中有很多字符串常量(用双引号括起来)。其中一些字符串包含类子字符串,如"declassification"本例中的常量:

public class Names {
    string text = "declassification";
    string classified = "foo";
}

所有 3 行都包含class,但"declassification"对我来说很有趣,因为它在双引号之间。

我做了什么:

我发现了这个问题:Regex.Matches c# double quotes。它告诉我如何在这样的双引号中获取所有内容\"(.*?)\": . 但我需要在双引号之间的任何位置搜索特定字符串。

这个问题:使用正则表达式提取双引号之间的值也告诉我使用这个:@"""New[^"":]+:[^""]+"""这对我不起作用。

查找结果:

错误的:

公共名称{

string text = "去分类";

字符串ified = "foo";

预期的:

string text = "去分类";

问题:

当我使用Visual Studio Find Tool进行搜索时,如何仅搜索字符串常量而忽略其余文件?

标签: c#regexvisual-studio

解决方案


提示:.*表示任意数量的任意字符

使用正则表达式,如果您搜索\"class\"它完全匹配"class"

要匹配在 之前和之后"<anything>class<anything>"添加任意数量的任意字符class

\".*class.*\"

要匹配'<anything>class<anything>'(例如 javascript 字符串),请使用以下命令:

["'](.*)(class)(.*)["']

推荐阅读