regex - regular - 在Visual Studio中搜索和替換



visual-studio replace (4)

在Visual Studio中,當我在選擇內搜索時,我想使用正則表達式替換每行匹配的第一個實例(或第二個,第三個等)。 我該怎麼辦?

搜索和替換

foo1 = foo1;
foo2 = foo2;
...
foo20 = foo20;

進入以下。

foo1 = bar1;
foo2 = bar2;
...
foo20 = bar20;

Answer #1

Visual Studio 2010和更早版本中 ,使用帶有反向引用的正則表達式

Visual Studio的正則表達式與我學到的完全不同。 花了一些時間來弄清楚正確的答案。

搜索

{foo}{:d+} = \1\2

用。。。來代替

\1\2 = bar\2

後引用是通過使用花括號{foo}進行tagging來完成的。 :d+\d+相同

在此處閱讀有關VS RegEx的更多信息


Answer #2

在Visual Studio 2012中,捕獲組和反向引用的使用方式與C#類似。 您可以使用常用括號捕獲它們,並使用$ 0,$ 1等反向引用它們。希望它有所幫助!

請注意,語法$1用於find-replace,但\1用於搜索字符串中的反向引用。


Answer #3

如果你變化多了:

Regex.Replace(input, @"(?<=\= )[^;0-9]*(?=[0-9]*;)", replacewith);

這個搜索=(anynumber); 並在之間取而代之。

編輯:該號碼是可選的。


Answer #4

我也可以在沒有正則表達式的情況下完成:

= bar替換= foo

如果需要正則表達式,可以使用:

foo(\d*) = foo(\d*);

用。。。來代替:

foo\1 = bar\2;




replace