2011-12-22 87 views
1

我有一組想要更改模式的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_]+)

然而,如果他們能怎麼辦有條件的更換在記事本++或其他工具?

謝謝!

+0

的可能的複製[多個詞的搜索和在記事本中替換++](http://stackoverflow.com/questions/11389466/multiple-word-search-and-replace-in-notepad) – AdrianHHH 2015-12-14 13:21:00

回答

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擁有該行的其餘部分。

0

記事本++實現的正則表達式是不是真的強大;所以,如果能

其他工具?

這裏是一個辦法做到這一點:

perl -pi.back -e '%tr=(Service=>"Sev",Operation=>"Opn",Support=>"Spt");s/(?<=create table)(\w+)/$tr{$1}/e;' TheFile 

,只要你想的哈希%tr內可以添加任意數量的Original => 'Modified'

TheFile將前處理待備份到TheFile.back

2

如果你有一組預定義的模式,你可以使用記事本的條件更換++這樣的:

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

區分大小寫必須勾選正則表達式必須

enter image description here