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