正则表达式

由于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];
}

Comments