【问题标题】:Search and replace in Visual Studio在 Visual Studio 中搜索和替换
【发布时间】:2011-12-12 11:54:46
【问题描述】:

在 Visual Studio 中,当我在选择中搜索时,我想使用正则表达式替换每行匹配的第一个实例(或第二个、第三个等)。我该怎么做?

搜索和替换

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

进入以下。

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

【问题讨论】:

    标签: regex visual-studio replace


    【解决方案1】:

    在 Visual Studio 2019 中查找/替换就这么简单。 我需要将 FORTRAN IO 格式字符串替换为 C++ 格式并使用子表达式和正则表达式的数量。

    示例:查找:“f9.8”、“f18.3”,并替换为 %9.8f、%18.3f
    reg exp: 查找 = ( f)(\d+.\d+) 替换 = %$2f

    【讨论】:

      【解决方案2】:

      在这里,按此处显示的方式输入

      搜索:(\w+\d+\s*=\s*)[^\d]+(\d+);

      替换:$1bar$2;


      阅读更多:Using Regular Expressions in Visual Studio

      【讨论】:

        【解决方案3】:

        Visual Studio 2010 及更早版本中,使用带有反向引用的正则表达式

        Visual Studio 的正则表达式与我所学的完全不同。我花了一些时间找出正确的答案。

        搜索

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

        替换为

        \1\2 = bar\2
        

        后向引用由tagging 使用大括号{foo} 完成。 :d+\d+ 相同

        Read more about VS RegEx here

        【讨论】:

        • 这个正则表达式不会返回吗?酒吧 1 = 酒吧 1;酒吧2 =酒吧2; ... bar20 = bar20;
        • 不,不会。我错过了什么吗?
        • 您编辑过您的帖子吗?我记得还有一个版本。这个还可以=)
        • @RanhiruCooray:我会放弃第一部分,使用“标准”正则表达式解决方案。或者把它移到底部——但无论如何都要保留关于 VS 正则表达式风格的部分,嗯,unique。 ;)
        • 在 VS2013 中这根本不起作用。我必须用圆形 () 替换 curly {} 并且它可以工作。
        【解决方案4】:

        在 Visual Studio 2012 中,捕获组和反向引用的使用与 C# 中一样。您可以使用普通括号捕获它们,并使用 $0、$1 等反向引用它们。希望对您有所帮助!

        请注意,语法$1 用于查找替换,但\1 用于搜索字符串中的反向引用。

        【讨论】:

        • 我正要得出结论,在我阅读此答案之前,反向引用已从 Visual Studio 2012 中删除。官方文档中完全没有提到msdn.microsoft.com/en-us/library/2k3te2cs(v=vs.110).aspx
        • 只是为了详细说明 VS 2012 的一个例子,一个 reg。 exp。用于从 XML 文档中的文本元素中删除周围的引号:Find box: >"(.*)" Replace box: >$1
        • Huzzah 在 VS 2012 中使用正确的正则表达式!这是巨大的!
        • 用于 VS2019 中的查找替换,效果很好!
        【解决方案5】:

        我也可以不用正则表达式:

        = foo 替换为= bar

        如果需要正则表达式,可以使用:

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

        替换为:

        foo\1 = bar\2;
        

        【讨论】:

        • 这实际上不起作用,因为 \d 不是 Visual Studio 中接受的字符。
        • 至少在 vs 2012 中,用于替换的反向引用需要使用$1,而不是\1
        • 这适用于 Visual Studio 2012 之前的旧版本。对于较新的版本,请参阅此问题的答案:stackoverflow.com/questions/3147096/…
        【解决方案6】:

        如果你想多变:

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

        此搜索 =(anynumber); 并将其替换。

        编辑: 该数字是可选的。

        【讨论】:

        • 这个问题是关于使用 Visual Studio 的 Find/Replace 模块,而不是关于 VB。
        猜你喜欢
        • 1970-01-01
        • 2011-04-20
        • 2017-09-20
        • 1970-01-01
        • 2019-09-28
        • 2018-04-25
        • 2010-12-13
        • 2015-08-18
        • 2010-10-06
        相关资源
        最近更新 更多