ITPub博客

首页 > Linux操作系统 > Linux操作系统 > vim正则表达式

vim正则表达式

原创 Linux操作系统 作者:regonly1 时间:2009-11-20 12:20:54 0 删除 编辑

原始字符串:tt.c_fundacco, tt.c_fundcode, tt.c_sharetype, tt.c_agencyno

希望能转换为:

tt.c_fundacco = t2.c_fundacco
tt.c_fundcode = t2.c_fundcode
tt.c_sharetype = t2.c_sharetype
tt.c_agencyno = t2.c_agencyno

可以使用如下表达式实现:
%s/tt\.\(\w\{10,}\)\(,\|$\)/tt\.\1 = t2\.\1\r/g
几个注意的地方:
\w表示数字和字母;
\{10,}表示10个或10个以上的数字字母组成;
\(  \)表示表达式内容,后面可由\1  \2...等同等替换
\r表示换行符

如何替换plsql中的注释?
plsql代码中有几类注释:
1、以--开头的行注释;
2、以/**/包围的范围注释;
3、Oracle自身强制优化的提示型注释,如/*+append*/,这类是不需要去掉的;
首先,查找2的注释:
\(\/\*\_.\{-}\*\/\)
然后,查找1的注释:
--\_.\{-}('\|$)
根据3的情况,对2进行改造并合并1:
\(\/\*\_[^+]\{-}\*\/\)\|\(--.*$\)
以上即可完全符合1、2、3的情况了。

替换的话就按照上面的查询结果替换即可。
含义:
\_:表示空格或换行
\{-}:表示以最小模式匹配
$:行末标识符
\|:或运算,对应的有\&且运算
[]:表示范围内的字符,加^符号表示不在该范围内的字符。比如上面的[^+]则表示不含有+号。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12932950/viewspace-620128/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-05-10

  • 博文量
    257
  • 访问量
    1070146