我有以下文本(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模块时而不是在其他情况下。
谢谢! 赤竹
答案 0 :(得分:0)
试试这个:
(?<key1>\w+):\s*(?<x>XXX)\n*\s*(?<key2>[^(]+?)\s*\(\s*\n*(?=.*?(?<y>YYY)\s=>)(?=.*?(?<z>ZZZ)\s=>)(?:[^(]+)\n*\)
输出:
MATCH 1
key1 [0-8] `my_inst1`
x [10-13] `XXX`
key2 [15-23] `port map`
y [29-32] `YYY`
z [44-47] `ZZZ`