【问题标题】:A regular expression in Visual Studio to do search and replace on this example line?Visual Studio 中用于在此示例行上进行搜索和替换的正则表达式?
【发布时间】:2011-10-02 19:13:52
【问题描述】:

我想替换如下行:

 Debug.Assert(value == 10.01);

如下一行:

 MyAssert.Equals(value, 10.01);

在 Visual Studio Studio 2010 中执行此操作的正则表达式是什么?

澄清

有 1000 个实例,每个实例都有不同的第一个和第二个参数。这个问题需要某种形式的搜索/替换正则表达式。

【问题讨论】:

  • 您尝试了哪些方法,哪个部分导致您出现问题?这是关于 Visual Studio 中正则表达式的资源:@​​987654321@
  • 这里有一个教程(edit:部分是产品广告 - 对此感到抱歉。不,我不推荐该产品。有人有更好的教程吗?)正则表达式有效(所以 VS 参考会帮助你) - regular-expressions.info/tutorial.html

标签: c# .net regex visual-studio visual-studio-2010


【解决方案1】:

试试这个:

查找:

Debug.Assert\({[^]*} == {[^)]*}\)

替换为:

MyAssert.Equals(\1, \2);

【讨论】:

    【解决方案2】:

    你可以替换

    Debug.Assert(value == 
    

    MyAssert.Equals(value, 
    

    它可能不需要任何正则表达式。

    所以你可以使用正则表达式。例如,

    Debug.Assert\((.*) ==
    

    和替换字符串

    MyAssert.Equals(\1,
    

    【讨论】:

    • 这实际上可行,您只需执行Debug.Assert(MyAssert.Equals(,然后您将有一些错误需要解决。
    • 干杯,我现在基本了解了它的工作原理。您在 RegEx 解析器中使用了什么? Visual Studio 使用 \1 和 \2 代替 $1 和 $2。
    • 太棒了......是的,有些使用 $,有些使用 \。我在在线网站上测试了正则表达式。不确定 Visual Studio。
    【解决方案3】:

    我认为你想做以下事情:

    找到所有Debug.Assert(<someName> == <someValue>);并将其替换为MyAssert.Equals(<someName>, <someValue>);

    使用搜索替换,您无法保留 someName

    我会尝试:

    搜索:Debug.Assert\({[\S]+} == {[^)]+}\);

    替换:MyAssert.Equals\(\1, \2\);

    但是我没有任何 Visual Studio(我在 OS X 上)可以试用它:-)

    【讨论】:

      【解决方案4】:

      在 Visual Studio 2012 中,您使用 $ 符号输入匹配的组。

      例如

      查找 .([a-zA-Z]*)XYZ

      替换 .$1ABC

      此正则表达式查找/替换将替换所有以 XYZ 为后缀的字段,然后更改为以 ABC 为后缀的字段。

      【讨论】:

        猜你喜欢
        • 2018-04-25
        • 2011-04-20
        • 2017-09-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-09-04
        • 1970-01-01
        相关资源
        最近更新 更多