2013-07-25 71 views
1

我在一個文件中的格式如下:正則表達式的字符串替換在記事本++

011890111,MFCD00005493 

我需要把所有的線路爲:

update [dbname].iwfs_part_search_tb set mdl_number='MFCD00005493' where condensed_part_number = '011890111'; 

我不知道的一種方式,我可以在Notepad ++中使用正則表達式來進行某些匹配,然後包裝這些匹配,並在我想用它們替換它們的內容中使用它們,而不是替換整個匹配項。有人能幫助我嗎?

+0

應該可以與一些正則表達式,但我一直與複雜的正則表達式的問題(應該尋找一些好的教程).. 。但是,如果您只是尋找一些快速解決方案,則可以在某些電子表格中導入文件,添加缺少信息的列,然後導出到文本文件。做了這一兩次作爲一個快速(是的,骯髒但快速)解決方法... – Martin

+0

馬丁,我真的結束了這樣做......有38K行需要修改。逐列操作比在其上運行正則表達式要容易得多。只是不要說smemy ....;) – ResourceReaper

+0

是的,這是一種「跛腳」的解決方案,這就是爲什麼我沒有把它作爲答案,但最終,如果你有一些結果要完成工作,你不能等到你得到最好的解決方案... :) – Martin

回答

10

試試這個:

查找內容:([0-9]+),([A-Z]+[0-9]+)
替換:update [dbname].iwfs_part_search_tb set mdl_number='$2' where condensed_part_number = '$1';

那麼顯然確保正則表達式檢查。

發生了什麼事?

([0-9]+) - pamentalhesis表示「捕獲組」,[0-9]+表示任意數量的「一個或多個」。
, - 逗號,不在捕獲組或任何東西中......只是一個逗號
([A-Z]+[0-9]+) - 另一個捕獲組,它包含一個或多個大寫字母后跟一個或多個數字。

然後可以在Notepad ++中的「替換爲」字段內使用$,然後使用該組的索引,然後使用上面的「捕獲組」。第一組($1)用於逗號前的數字組,而第二組($2)用於逗號後的字母和數字組。

測試:

011890111,MFCD00005493 
011891232,MDAN00032492 
011853233,MFCD00005444 
011892121,MFCD
011812341,MAAS00005493 

變爲:

update [dbname].iwfs_part_search_tb set mdl_number='MFCD00005493' where condensed_part_number = '011890111'; 
update [dbname].iwfs_part_search_tb set mdl_number='MDAN00032492' where condensed_part_number = '011891232'; 
update [dbname].iwfs_part_search_tb set mdl_number='MFCD00005444' where condensed_part_number = '011853233'; 
update [dbname].iwfs_part_search_tb set mdl_number='MFCD' where condensed_part_number = '011892121'; 
update [dbname].iwfs_part_search_tb set mdl_number='MAAS00005493' where condensed_part_number = '011812341'; 
+0

我通過N ++運行它,這是完美的!謝謝smemy :) – ResourceReaper

+0

所以在正則表達式上的問題,[0-9]匹配所有字符0-9,但是之後的'+'是什麼意思? – ResourceReaper

+1

「+」的意思是「一個或多個」,因此,「a [0-9] + b」將匹配「a0b」以及「a0219412084219b」等。[0-9]'會只匹配一個數字,'a [0-9] * b'會匹配「零個或多個」,所以「ab」或「a93248b」。 – smerny