使用Regex在Visual Studio中查找和替换

时间:2015-07-05 13:50:49

标签: regex visual-studio visual-studio-2012

我发现您可以在Visual Studio中的查找和替换中使用Regex进行搜索查询。我有很多类似的行:

datum["Id"] = id; datum["Name"] = name;

我还有更多这样的行:

this.Id = datum["Id"]; this.Name = datum["Name"];

我想把第一行改为:

datum.Set("Id", id); datum.Set("Name", name);

第二组线:

this.Id = datum.Get<int>("Id"); this.Name = datum.Get<int>("Name");

如何使用查找和替换以及正则表达式?我无法理解。

2 个答案:

答案 0 :(得分:0)

点击&#39;启用正则表达式后,使用正则表达式&#39;按钮,将以下内容放入查找:

datum\[\"Id\"\]\s*=\s*id\;

并将以下内容置于替换状态(无需在替换中使用正则表达式):

datum.Set("Id", id);

类似地:

在查找中:

datum\[\"Name\"\]\s*=\s*name\;  

取代:

datum.Set("Name", name);

在查找中:

this\.Id\s*=\s*datum\[\"Id\"\]\; 

在替换中:

this.Id = datum.Get<int>("Id");

在查找中:

this\.Name\s*=\s*datum\[\"Name\"\]\; 

在替换中:

this.Name = datum.Get<int>("Name");

答案 1 :(得分:0)

我认为你需要在替换字段中使用带有替换的通用正则表达式。

这个表达式:

([a-zA-Z0-9_]+)\["([a-zA-Z0-9_]+)"\] = ([a-zA-Z0-9_]+);

匹配您的第一行。

你应该输入&#34; Find ...&#34;字段。

此表达式允许您进行所需的替换:

$1.Set("$2", $3);

把它放到&#34;替换......&#34;字段。

$n中的编号表达式替换原始正则表达式中由(...)定义并按顺序编号的组中的目标。

所以,替换你的第二行就是这样:

查找:(this.[a-zA-Z0-9_]+) = ([a-zA-Z0-9_]+)\["([a-zA-Z0-9_]+)"\];

替换:$1 = $2.Get<int>("$3");

您可以在MSDN

上找到更多信息

P.S。随时可以提出更多问题以获取详细信息。