代码之家  ›  专栏  ›  技术社区  ›  SmacL

在Visual Studio 2003下搜索并替换为正则表达式

  •  0
  • SmacL  · 技术社区  · 14 年前

    我有一个大的C++代码库,我正在做一些重构,在那里一些函数已经变得多余,因此应该被删除。所以我想换一个

    MyFunc(Param)
    

    具有

    Param
    

    其中,param可以是文字值、变量、函数调用等…从联机帮助中,我收集到搜索参数应该是

    MyFunc/({+}/(
    

    替换参数简单

    /1
    

    但这在我的模式中给了我一个语法错误。我刚开始在Visual Studio下搜索并替换为regex。上述问题是否容易实现?我在这个网站上看到过类似的问题,这表明我大致上走对了道路,但似乎遗漏了一些东西。

    如果你能回答上面的问题,那它是否是课堂尊重的一部分呢,例如

    MyClass.MyFunc(Param) 
    

    MyClass->MyFunc(Param)
    

    (fwiw,我还收到了一份visualassist的副本,希望它能做到这一点,但它似乎无法处理这种情况)。

    第二次编辑: 感谢乔的正确回答,但对于其他使用这种方法的人,要注意一些陷阱,

    MyFunc(MyArray[MyOtherFunc(x)])
    

    结果是

    MyArray[MyOtherFunc(x])
    

    MyFunc((SomeType)x)
    

    结束为

    (SomeTypex)
    

    在执行搜索和替换之前进行搜索以检查得到的内容之后,请确保在需要撤消操作时将修改过的文件保持打开状态,并在启动之前备份源文件,这就足够好了。即使列出了陷阱,仍然可以节省大量时间。

    1 回复  |  直到 14 年前
        1
  •  2
  •   JoeG    14 年前

    试试这个:

    查找= MyFunc\({[^\)]*}\) 替换= \1

    你的斜线是错误的,括号里的表达式也是错误的。( {+} )无效。

    对于包含函数调用或其他括号用法的参数,这不起作用-使用正则表达式无法解决平衡括号匹配问题。