在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
”
录制下来的宏如下:
实现需求的提出: 接到一个由工具导出的数据库脚本,要求对存在性做判断, 并且写一些日志。
分析: 手工工作量太大(几万行的脚本),编写程序过于复杂,决定采用模版加替换的方式。
工具的认识:
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^)
^(%ADD INDEX ^)^([a-z0-9A_Z_]+^)^( *^p^)
Replace Test
Begin ^2 ^p ^1^2^3 ^p^2 End^p
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
另外
Begin ^2 ^p ^1^2^3 ^p^2 End^p
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
另外
以!开头的这一行
%!*^p^
Ctrl + A 然后Ctrl+Tab的多次操作,如果用宏可表示为下
Find RegExp "%[ ^t]+"
Replace All ""
Ctrl + A 然后Ctrl+Tab的多次操作,如果用宏可表示为下
Find RegExp "%[ ^t]+"
Replace All ""