在Visual Studio中,当我在选定的文本中搜索时,我想使用正则表达式替换每行中的第一个(或第二个、第三个等)匹配项。我该如何做到这一点?
搜索和替换
foo1 = foo1;
foo2 = foo2;
...
foo20 = foo20;
转换成以下形式。
foo1 = bar1;
foo2 = bar2;
...
foo20 = bar20;
在Visual Studio中,当我在选定的文本中搜索时,我想使用正则表达式替换每行中的第一个(或第二个、第三个等)匹配项。我该如何做到这一点?
搜索和替换
foo1 = foo1;
foo2 = foo2;
...
foo20 = foo20;
转换成以下形式。
foo1 = bar1;
foo2 = bar2;
...
foo20 = bar20;
在 Visual Studio 2012 中,捕获组和反向引用与 C# 中的用法相同。你可以使用普通括号进行捕获,并使用 $0、$1 等进行反向引用。希望这能帮助到你!
请注意,在查找替换中使用语法 $1
,但在搜索字符串中使用 \1
进行反向引用。
在 Visual Studio 2010 及更早版本 中,使用带有反向引用的正则表达式。
Visual Studio 的正则表达式与我所学的完全不同。花了些时间才找到正确答案。
搜索:
{foo}{:d+} = \1\2
替换为
\1\2 = bar\2
通过在花括号标记{foo}
中进行tagging
实现反向引用。:d+
与\d+
是相同的。
= foo
替换为= bar
。foo(\d*) = foo(\d*);
替换为:
foo\1 = bar\2;
\d
不是一个被接受的字符。 - Ranhiru Jude Cooray$1
而不是 \1
。 - mbomb007如果您想要更多的变量:
Regex.Replace(input, @"(?<=\= )[^;0-9]*(?=[0-9]*;)", replacewith);
这段代码用于查找 =
和 (任意数字);
并将它们之间的内容替换。
编辑: 数字是可选的。