在Visual Studio中,当我在选择内搜索时,我想使用正则表达式替换每行匹配的第一个实例(或第二个,第三个等)。我该怎么做?
搜索并替换
foo1 = foo1;
foo2 = foo2;
...
foo20 = foo20;
进入以下。
foo1 = bar1;
foo2 = bar2;
...
foo20 = bar20;
答案 0 :(得分:71)
在Visual Studio 2012中,使用捕获组和反向引用,就像在C#中一样。您可以使用常用括号捕获它们,并使用$ 0,$ 1等反向引用它们。希望它有所帮助!
请注意,语法$1
用于查找替换,但\1
用于搜索字符串中的反向引用。
答案 1 :(得分:33)
在 Visual Studio 2010及更早版本中,使用带有反向引用的正则表达式
Visual Studio的正则表达式与我学到的完全不同。花了一些时间找出正确的答案。
搜索
{foo}{:d+} = \1\2
替换为
\1\2 = bar\2
后引用由tagging
使用花括号{foo}
完成。 :d+
\d+
相同
答案 2 :(得分:2)
我也可以在没有正则表达式的情况下完成:
将= foo
替换为= bar
。
如果需要正则表达式,可以使用:
foo(\d*) = foo(\d*);
替换为:
foo\1 = bar\2;
答案 3 :(得分:2)
在Visual Studio 2019查找/替换中如此简单。 我需要将FORTRAN IO格式的字符串替换为C ++格式,并使用子表达式和正则表达式的编号。
示例:找到:“ f9.8”,“ f18.3”,并替换为%9.8f,%18.3f
reg exp:Find =(f)(\ d +。\ d +)Replace =%$ 2f
答案 4 :(得分:1)
在这里,输入与此处显示的完全相同
搜索:(\w+\d+\s*=\s*)[^\d]+(\d+);
替换:$1bar$2;
答案 5 :(得分:-2)
如果你变化多了:
Regex.Replace(input, @"(?<=\= )[^;0-9]*(?=[0-9]*;)", replacewith);
搜索=
和(anynumber);
并将其替换为。
修改强> 该号码是可选的。