我有一组想要更改架构的SQL脚本。
create table Service.Table1 (col1 varchar(100));
create table Operation.Table2 (col1 varchar(100));
create table Support.Table3 (col1 varchar(100));
然而,架构将会改变
Service -> Sev
Operation -> Opn
Support -> Spt
搜索正则表达式很简单([A-Za-z0-9_]+)\.([A-Za-z0-9_]+)
但是,如果可以的话,如何在Notepad ++或其他工具中进行条件替换?
谢谢!
答案 0 :(得分:2)
如果您有一组预定义的模式,您可以在Notepad ++中使用条件替换,如下所示:
查找:(?:(?<a>Service)|(?<b>Operation)|(?<c>Support))\.(?<n>[A-Z0-9_]+)
替换:(?{a}Sev:(?{b}Opn:Spt)).$+{n}
匹配大小写必须勾选 off ,正则表达式必须 。
答案 1 :(得分:0)
我会为每个模式名称运行替换3次:
Find:
create table Service\.
Replace with:
create table Svc.
Find:
create table Support\.
Replace with:
create table Spt.
Find:
create table Operation\.
Replace with:
create table Opn.
或者这是一个使用群组引用的人:
Find:
Service(\.[^\s]+)(.*)
Replace with:
Svc\1\2
这里\1
将保持点运算符和表名,而\ 2保存行的其余部分。
答案 2 :(得分:0)
Notepad ++正则表达式实现并不是真正强大的;所以,
其他工具,如果他们可以吗?
这是一种方法:
perl -pi.back -e '%tr=(Service=>"Sev",Operation=>"Opn",Support=>"Spt");s/(?<=create table )(\w+)/$tr{$1}/e;' TheFile
您可以在哈希Original => 'Modified'
中添加任意数量的%tr
。
TheFile
将被备份到TheFile.back
。