SourceInsight中正则表达式的使用

作为白盒测试人员,SourceInsight软件是看代码利器,source是支持正则表达式(后简称RE)搜索的,在网上随便搜搜帖子也不少,所以拿来主义一下,去次取精简单整合就会变成自己的技能了

1.搜索常用命令

RE中的主要概念就是一堆通配符。通配符可以分为两类,一种是表示内容的,一种是表示数量的。

表示内容的如:

  .      表示任意字符

[abc]    任何在[]之内的字符

[^abc]   任何不在[]之内的字符,^表示不在[]之内

还有一些就是转义字符了如\t(tab), \s(space), \w(tab or space)

表示数量的如:

*   表示大于等于0个

+   表示大于0个,也就是至少有1个

其它如:

^    表示行起始,注意不要把这个^和[]里的^搞混了。

$    表示行的结束

要说明的是,不同的工具对RE的支持不太一样,比如强一点的工具支持的通配符可能会多一点,转义字符的定义也可能不一样等等。

举个例子理解一下吧:

.*      这条RE可以匹配任意的字符串序列,因为.表示任意字符,*表示大于等于0个,连起来理解就是“任意个任意字符”

[abc]+   表示“a或b或c出现1次或多次”,像字符串abc, cbac, aacbcb,aaaaa都被可以匹配

注意:[abc]+一定不要写成[abc]*,否则结果会是个灾难(我用一个小工程试了一下都导致SI卡了好久),因为[abc]*会把工程中所有代码都用搜索结果的方式列出来啊!

 

2.替换及举例

在理解上面的基础之上就可以使用RE进行替换了,替换和搜索没有什么不同,比如你可以将"[abc]+"替换成"abc",但如果仅仅是这样就没有什么意思了。替换里和RE相关的内容是分组。与分组有关的概念包括:

1. 一个分组以\(开始,以\)结束

2. 一个RE中可以有多个分组

3. 引用一个分组使用\1, \2, \3, ...

还是举个例子吧,假设我们的代码中有个函数叫func,它的原型定义如下:

void func(int var3, int var5)

如果想把func的原型修改成如下格式(即将两组变量对调):

void func(int var5, int var3),

此处可以运用正则。按下Ctrl+h,选择使用RE进行替换,在Old中输入"func(\(.*\), \(.*\))",在New中输入"func(\2, \1)",即将第二分组和第一分组对调,然后执行,你会发现替换成功了。

当然ctrl+h只能在本文件中搜索替换,要想替换整个工程的,可以使用ctrl+shift+h。

 

转载链接http://blog.sina.com.cn/s/blog_6826866101014bpd.html  本文是在原文基础上做了修改,虽然该链接中也写明了转载,就不费力去追本溯源了,对原作者表示感谢!

你可能感兴趣的:(zhishi,正则表达式)