Regex 通过留下特定的单词替换文本

Regex 通过留下特定的单词替换文本,regex,str-replace,Regex,Str Replace,我多次使用XXX、YYY和ZZZ作为固定字编写以下文本(VHDL中的模块实例化): my_inst: XXX port map ( YYY => my_o, ZZZ => my_i ); 我想找到所有实例化XXX的块,并替换如下 XXX -> BUFF YYY -> b_o ZZZ -> b_i 案文的其余部分应保持不变 同样重要的是,只有在实例化XXX模块时,才用b_o替换YYY,而不是在其他情况下 谢谢! Sasa试试这个: (?<key

我多次使用XXX、YYY和ZZZ作为固定字编写以下文本(VHDL中的模块实例化):

my_inst: XXX
 port map ( 
  YYY => my_o,
  ZZZ => my_i 
);
我想找到所有实例化XXX的块,并替换如下

XXX -> BUFF
YYY -> b_o
ZZZ -> b_i
案文的其余部分应保持不变

同样重要的是,只有在实例化XXX模块时,才用b_o替换YYY,而不是在其他情况下

谢谢! Sasa

试试这个:

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

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

太好了,谢谢!我对它做了一些修改,只存储了我感兴趣的三个::\s*(?XXX)\n*\sport\s*\nmap\s*\n*(\s*\n*(?=.*?(?YYY)\s=>)(?=.*(?ZZZ)\s=>)(?:[^(]+)\n*)我如何在一个文件中应用它来替换所有同时发生的内容?太好了,谢谢!我做了一点修改,只存储了我感兴趣的三个::\s*(?XXX)\n*\sport\s*\nmap*\n*\n*\n*\n*(?=.*(?YYY)\s=>)(?=.*(?ZZZ)\s=>)(?:[^(+)\n*)我如何在一个文件上应用它来替换所有同时发生的事件?