将所有`n *`替换为`*`后面的`n`数据实例

时间:2013-11-03 04:45:15

标签: regex replace ultraedit

Eclipse水库模拟器将ASCII数据文件作为输入。他们有一种压缩已保存数据的方法,因此在输入他们保存的数据时,他们必须像这样扩展它:

4*0 4*1 0 3*1 5*0 1 0 2*1 10*.2
Expanded to
0 0 0 0 1 1 1 1 0 1 1 1 0 0 0 0 0 1 0 1 1 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2

重复次数是除1以外的任何正整数,数据可以是任何非负实数。

给定一串压缩数据,使用正则表达式来实现扩展。我应该在替换线上写什么?非常感谢UltraEdit中的一个例子;脚本/宏被接受。

原始正则表达式:

   Find: (\d+)\*(\d)
Replace: 

1 个答案:

答案 0 :(得分:1)

这种类型的替换需要替换端的一般字符串表达式,据我所知,UltraEdit不提供只有“查找/替换”界面。但你可以写一个脚本来做到这一点:

UltraEdit.activeDocument.write( 
  UltraEdit.activeDocument.selection.replace(
    /(\d+)\*(\S+)/g,
    function(_, count, value) { 
      return new Array(count-0+1).join(value+' ').replace(/ $/,''); }
));