[原文地址:http://babybandf.blog.163.com/blog/static/619935320101042245922/] 0. 一些需要注意的不同 VIM中的正则表达式和其他的有点不一样 (1) 有些符号要用转义,比如+表示重复一次或以上,其他的还有一些,:h pattern查看 (2) 非贪婪匹配用{-}, 如.*{-}匹配尽量短的任意字符 (3) i匹配标识符字符[a-zA-Z0-9_],其大写形式表示不包括数字在内的标识符[a-zA-Z_],这两个不是互补的意思,类似的还有kfp,但是s匹配空白字符,S匹配非空白字符,这两个是互补的. (4) 待续 tips:按/然后再按方向键的向上,可以找到上次查找的表达式,这样对测试正则表达式方便了不少 1. 查找C语言的所有函数定义 试了无数次,终于写了一个查找C语言中所有函数定义的正则表达式,写这个的目的其实是因为Notepad++的一个插件function list里面允许自定义正则表达式,然后可以把这个正则表达式匹配到的内容作为一个列表列出来,这个插件已经自带了C语言的例子,但是这个例子里面有个小 错误,就是会把else if(…)这种格式的也认为是函数,我就想自己修改一下,让这个插件能排除这种情况, 因为同时我也在研究VIM,所以就直接在VIM里面测试正则表达式了. /s*< (return|else)@!w+s+w+s*([^)]*)s*;@!s*$ 解释一下,不然怕以后自己也看不懂了 / 这个是向下查找的命令 s* 匹配0或多个空白(比如空格,Tab等,不匹配换行) 顺便说一下,VIM里面,如果要连换行一起匹配,则加个下划线,比如_s匹配包括换行在内的空白,而_.匹配包括换行在内的任意字符(注意,后面有个小数点) < 这个是个"零长度匹配",表示单词开头,这种"零长度匹配"只是指定匹配结果需要满足的条件,不匹配实际内容,类似的有很多,用:h /zero-width可以进入VIM的正则表达式帮助,然后用/zero-width查找,再不停的按n,可以找到所有"零长度匹配"的作用 (和) 其实就是划定一个范围,这个范围内的内容作为一个整体来看,后面可以跟+表示这个整体重复1次或以上,另外这个整体还会保存在寄存器里面,根据出现的先 后顺序,分别寸在1~9号寄存器,在同个正则表达式里面,就可以用1到9来指代前面的这个整体,这个用法相当的重要 | 表示"或"的意思,也就是说,只要满足两边任意一个匹配都行,需要注意的是,在括号里面,是把左右两个部分作为整体,而不是只有一个字符,所以不用再加括号了 这里排除了return和else,暂时没有发现其他需要排除的,如果发现了,再添上去就好了 @! …
2010总结
Posted by herrickc
on February 4, 2011
1 comment
首先,这个总结相当的不肺腑不由衷 ================================== 年初的时候去了趟西宁,待了两个月,然后就跑回来了~ 因为没捱到天暖,所以,就没去成青海湖~ 还好我对旅游没啥兴趣~ 没啥遗憾的 那个运营商的BOSS系统还是很给力的~ 不管从造价还是从维护的麻烦程度~ 这趟西宁,学了下Lua,TCL/TK~ 维护了下tuxedo和weblogic~ 算是有不错的收获 ================================== 逃离西宁之后,来到北京一家外包公司…… 外包到微软打杂~ 坏处是没啥发展,工作技术含量不高;好处是,领教一下微软的工作流,方法学…… 然后混到现在…… ================================== 家里逼着再考研来着……可是总也没动力再做这件事情…… 于是各种错过,然后,就没考~ 也就不知道自己那半瓶子水还能不能考得上研究生了…… ================================== 家里的另外一些动作,不想讲,所以略过…… ================================== 兔子年没啥特别的追求了~ 期待能厚积薄发吧~ 于是看是慢慢积累…… sigh~
吐槽无力……
Posted by herrickc
on December 16, 2010
No comments