匹配并替换不同数量的组

时间:2015-06-09 19:46:34

标签: regex

示例:我想搜索并替换以下

51h 04h 02h     
CAh             

并获得:

cmd 51h; addr 04h; data 02h;
cmd CAh;

这将匹配第一行

^([0-9A-F]{2}h)\t([0-9A-F]{2}h)\t([0-9A-F]{2}h)

我可以用

代替
cmd $1; addr $2; data $3;

但当然第二行不匹配。无论如何用一个正则表达式覆盖两条线?我正在使用来自崇高文本2的正则表达式。

1 个答案:

答案 0 :(得分:1)

您可以使用以下内容:

^([0-9A-F]{2}h)\s+([0-9A-F]{2}h)\s+([0-9A-F]{2}h)\s+(\w+)
                                                 ↑↑↑↑↑↑↑↑

请参阅DEMO

逻辑:由于\s匹配水平和垂直空间,它将捕获以下行中的下一个单词组