Notepad ++ RegEx:将模式从“字符串A”移动到下一个“n”行的开头

时间:2018-03-15 20:32:28

标签: regex excel notepad++

我正在使用Notepad ++清理工作中的信息,然后在Excel中使用它。经过一些清理后,我以下面的文字结尾:

01
Ammount 1-1 [tab] Ref 1-1
Ammount 1-2 [tab] Ref 1-2
02
Ammount 2-1 [tab] Ref 2-1
Ammount 2-2 [tab] Ref 2-2
Ammount 2-3 [tab] Ref 2-3
[...]
nn
Ammount nn-1 [tab] Ref nn-1
[...]
Ammount nn-yy [tab] Ref nn-yy
  

“[tab]”部分代表制表符(\ t)。

     

“[...]”部分代表具有相似模式的“n”行文本。

当我在Excel中粘贴此信息时,我得到的行有两个单元格中自动分隔的标签,然后是一行数字的行,之后我手动将此数字移动到以下每行之前的(空)单元格最后我删除了空行,结果如下文所示:

01 [tab] Ammount1-1 [tab] Ref1-1
01 [tab] Ammount1-2 [tab] Ref1-2
02 [tab] Ammount 2-1 [tab] Ref 2-1
02 [tab] Ammount 2-2 [tab] Ref 2-2
02 [tab] Ammount 2-3 [tab] Ref 2-3
[...]
nn [tab] Ammount nn-1 [tab] Ref nn-1
[...]
nn [tab] Ammount nn-yy [tab] Ref nn-yy

Excel中的最后一个手动作业可能需要很长时间,具体取决于我正在使用的报告的扩展名,所以我想知道Notepadd ++中是否有一种方法,使用正则表达式,可以立即调整所需的格式防止在Excel中手动执行此操作。

如果您需要任何澄清,请告诉我。

提前致谢!

1 个答案:

答案 0 :(得分:-1)

更新显然你需要一个脚本功能来执行此操作)

可以一次完成,但需要回调功能 回调中的,你必须做另一个简单的替换。

伪代码示例(有效的正则表达式):

func Callback(grp1,grp2)
{
   string record_num = grp1;
   string all_other_lines = grp2;
   all_other_lines.replace( /(?m)^\s*(\S.*)/, record_num + "\t$1"/, "g" );
   return all_other_lines;
}

input.replace( /(?ms)^(\d+)((?:(?!^\d).)+)/, Callback($1,$2), "g");