有时会出现如下场景:
旧代码:
ClassA* a1 = new ClassA();
ClassB* b1 = new ClassB();
ClassC* c1 = new ClassC();
ClassD* d1 = new ClassD();
需要更新成智能指针,新代码:
std::shared_ptr<ClassA> a1 = std::make_shared<ClassA>();
std::shared_ptr<ClassB> b1 = std::make_shared<ClassB>();
std::shared_ptr<ClassC> c1 = std::make_shared<ClassC>();
std::shared_ptr<ClassD> d1 = std::make_shared<ClassD>();
如果以上代码需要一个一个改,比较麻烦,且容易出错。
那么...Ctrl+F,勾选适用正则表达式
查找部分填入:
([\w]+)\*\s+([\S\s]+)?new\s+[\w]+\(\);
替换部分填入
std::shared_ptr<$1> $2 std::make_shared<$1>();
注意,以上必须勾选使用正则表达式选项,否则无法查找到!
然后进行单个替换,即能完成该工作。
知识点:
查找部分中,括号表示可以在替换时候进行引用
替换部分中,$符号代表引用,后面的数字即引用的索引
以上全部均是个人已有一定正则表达式基础的理解,只做经验的记录。