由于pjsip函数的返回值用宏定义,Source Insight工具无法识别为函数,因此在阅读代码的时候难以找到函数的定义,给理解代码带来一定的麻烦。这正是考验自己的时候,其实遇到这样的问题很平常,解决也很简单,只是没碰到过,所以觉得无法入手。使用正则表达式,很好的解决这个问题,把宏替换,在Linux下的命令为:
批量替换
1
| find . -name "*.[c|h]" | xargs perl -pi -e "s|PJ_DEF\(([^\(]*)\)|$1|g"
|
批量地找c和h文件,替换PJ_DEF宏,但保留参数不变。掌握正则表达式,对提高工作效率有比较大的帮助。
掌握正则表达式,并且配合grep,sed,awk,perl,python等工具一起使用,对于文本处理,威力就无穷大了。
一般的正则表达式匹配:
1
2
3
| .代表的是任意字符,*代表的是多个,[a-z|A-Z]代表的是字母,^[list]代表的是以list开头,
[^list]代表的是不是list的,[list]$代表的是以list为结尾,匹配一些特殊符号需要转义,
如\(, \t;\{1,15\}代表的是1-15个。
|
匹配host的IP地址的方式:
匹配host的IP地址的方式:
1
2
3
4
5
6
7
| var url = '/http:\/\/([\d.]*):[\d]*\/\S*/';
var text = 'http://192.168.1.100:8080/tr069';
var result = text.match(url);
if (result != null)
{
ip = result[1];
}
|