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

正则表达式完成替换功能(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++ 中的图例:

14f8cc1c465d5e996034462b555a5b23.png

SourceInsight中的图例:

57256fa37e54177baebd69f0bd796ca8.png

NotePad++中同时查找多个关键字

比如想查找文件中包含“u32_t”或者“u16_t”的所有行,查找方式选择“正则表达式查找”,可以用notepad++输入“(u32_t)\s|(u16_t)\s”或者简单输入“u32_t|u16_t”查找即可,如下图所示。

对于想一次查找多个关键字的情况,只需在查找目标框中输入或关系多个关键字,点击查找即可,“|”号前后无空格。

3b19085caa97bb3a6664657c45c58ae2.png

在使用NotePad++ 正则表达式时参考了下面的文章:

NotePad++ 正则表达式替换 高级用法(博客);

Regular Expressions;

NotePad++ 正则表达式替换 高级用法();

正则表达式 - 教程;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值