在UltraEdit使用正则表达式实现替换

实现需求的提出: 接到一个由工具导出的数据库脚本,要求对存在性做判断, 并且写一些日志。
分析: 手工工作量太大(几万行的脚本),编写程序过于复杂,决定采用模版加替换的方式。

工具的认识:
UltraEdit有宏的概念, 并且能够根据进行的操作直接录制宏,这样便于跟踪和再测试,简化操作过程。
UltraEidt支持正则表达式的替换。
但UltraEidt的正则表达式不是标准的正则表达式, 相关帮助非常缺乏(:前我都没有找到\W \s等这些的写法,极度郁闷(:

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
其中一个重要和核心的正则式是:
在Find 字符串中查找形如这样的字串 ^()^()
在Replace字串中可以使用^1^2来取出其中的原字串出来。

如:查找以“ADD INDEX ”开头, 加一个Index名称,加一个空格和任何字符的一行。
将其替换为
“Begin Index名称
原字符串
Index名称 End


那么
“ADD INDEX BIN_LOCATION_DETAILS_1 /TABLE=BIN_LOCATION_DETAILS”
将被替换成
Begin BIN_LOCATION_DETAILS_1
ADD INDEX BIN_LOCATION_DETAILS_1 /TABLE=BIN_LOCATION_DETAILS
BIN_LOCATION_DETAILS_1 End


录制下来的宏如下:
Find String
^(%ADD INDEX ^)^([a-z0-9A_Z_]+^)^( *^p^)
 
Replace Test
Begin ^2 ^p ^1^2^3 ^p^2 End^p
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
另外
以!开头的这一行
%!*^p^

Ctrl + A 然后Ctrl+Tab的多次操作,如果用宏可表示为下
Find RegExp "%[ ^t]+"
Replace All ""

posted on 2007-01-10 15:06  袁礼定  阅读(190)  评论(0编辑  收藏  举报