留下特定的单词替换文本

时间:2016-03-11 08:50:37

标签: regex str-replace

我有以下文本(VHDL中的模块实例化)多次,XXX,YYY和ZZZ为固定词:

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

我想找到实例化XXX的所有块并替换如下。

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

文本的其余部分应保持不变。

同样,重要的是YYY替换为b_o,仅在实例化XXX模块时而不是在其他情况下。

谢谢! 赤竹

1 个答案:

答案 0 :(得分: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`