正则表达式完成替换功能(NotePad++和SourceInsight)

版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/helaisun/article/details/81021518

正则表达式完成替换功能(NotePad++和SourceInsight)


最近在用SI看网上下载的代码时,遇到很多对类型进行了变态重定义的情况,类似如下代码:

// VAR(int_T, void)实际上等价于int_T,int_T是已定义的类型。
VAR(int_T, void) Device_Add( DeviceType *devPtr ) {

}

VAR(uintT,  void) arc_putchar( int c, FILE *file ) {
    Sys.ConsoleDevicePtr->read( )
    return fgetc(file);
}

VAR(uint8,  void) arc_putchar( int c, FILE *file ) {
}
VAR(int_T,  void) arc_putchar( int c, FILE *file ) {
}
VAR(int_T,  void) arc_putchar( int c, FILE *file ) {
}

看到如上代码,就想通过自动化的方式把“VAR(int_T, void)”换成“int_T”,把“VAR(uint8, void)”换成“uint8”等,
于是就想到了正则表达式,看了几篇博文,分别尝试了在SourceInsight和NotePad++下进行转化的方式,两者正则表达式有很多通用的地方,但也发现两点有区别的:

  • SourceInsight的正则表达式默认是非贪心匹配,而NotePad++正好相反,所以有必要使用非贪心匹配符号“?”。
  • SourceInsight和NotePad++的正则表达式在括号的使用上也不尽相同,见下面的例子。估计还有其他有差异的使用方法。

要完成将上面代码中“VAR(int_T, void)”换成“int_T”的功能,在SourceInsight和NotePad++下的操作如下:

// 在NotePad++ 上使用Ctrl+H ,输入下面的命令去替换,具体如下:
VAR\((.*?),[[:blank:]](.*?)\) // 查找目标中输入
\1  // 替换为中输入

// 在SourceInsight中使用 Ctrl+H 在其中输入命令完成替换:
VAR(\(.*?\), \(.*?\)) // old中输入
\1  // new中输入

// 需要注意的是都需要在界面中选中 “使用正则表达式”

NotePad++ 中的图例:
这里写图片描述
SourceInsight中的图例:
这里写图片描述
在使用NotePad++ 正则表达式时参考了下面的文章:

猜你喜欢

转载自blog.csdn.net/helaisun/article/details/81021518
今日推荐