【问题标题】:Replace text by leaving specific words通过留下特定字词替换文本
【发布时间】:2016-03-11 08:50:37
【问题描述】:

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

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

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

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

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

再次强调,将 YYY 替换为 b_o 很重要,仅在实例化 XXX 模块时而不在其他情况下。

谢谢! 莎莎

【问题讨论】:

    标签: regex str-replace


    【解决方案1】:

    试试这个:

    (?<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`
    

    【讨论】:

    • 太好了,谢谢!我对其进行了一些更改以仅存储我感兴趣的三个: :\s*(?XXX)\n*\sport\s*\nmap\s*\n *(\s*\n*(?=.*?(?YYY)\s=>)(?=.*?(?ZZZ)\s=>)(?:[^( ]+)\n*) 我怎样才能将它应用到一个文件上,以便在它们同时出现时替换它们?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-20
    • 2019-02-21
    • 2019-01-23
    • 1970-01-01
    • 2022-12-11
    相关资源
    最近更新 更多