2016-03-11 40 views
1

替換文本,我有以下的文字(以VHDL模塊實例化)多次與XXX,YYY和ZZZ爲固定的話:留下特定的詞

my_inst: XXX 
port map ( 
    YYY => my_o, 
    ZZZ => my_i 
); 

我想找到所有實例XXX塊並替換如下。

XXX -> BUFF 
YYY -> b_o 
ZZZ -> b_i 

其餘文字應該保持不變。

同樣重要的是,只有當XXX模塊被實例化時,YYY才被替換爲b_o,而在其他情況下不會。

謝謝! 莎莎

回答

0

試試這個:

(?<key1>\w+):\s*(?<x>XXX)\n*\s*(?<key2>[^(]+?)\s*\(\s*\n*(?=.*?(?<y>YYY)\s=>)(?=.*?(?<z>ZZZ)\s=>)(?:[^(]+)\n*\) 

Demo

輸出:

MATCH 1 
key1 [0-8] `my_inst1` 
x [10-13] `XXX` 
key2 [15-23] `port map` 
y [29-32] `YYY` 
z [44-47] `ZZZ` 
+0

很好,謝謝!我改變了一點,只存儲了我感興趣的三個: :\ s *(? XXX)\ n * \ s * port \ s * \ n * map \ s * \ n * \(\ s * \ n *(?=。*?(? YYY)\ s =>)(?=。*?(? ZZZ)\ s =>)(?:[^(] +)\ n * \) 如何將它應用到文件中,以便每次一起發生時全部替換它們? –