Notepad ++正则表达式条件替换

时间:2011-12-22 03:31:49

标签: regex conditional notepad++ replace

我有一组想要更改架构的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 ++或其他工具中进行条件替换?

谢谢!

3 个答案:

答案 0 :(得分:2)

如果您有一组预定义的模式,您可以在Notepad ++中使用条件替换,如下所示:

查找(?:(?<a>Service)|(?<b>Operation)|(?<c>Support))\.(?<n>[A-Z0-9_]+)
替换(?{a}Sev:(?{b}Opn:Spt)).$+{n}

匹配大小写必须勾选 off 正则表达式必须

enter image description here

答案 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

相关问题