通过正则表达式匹配和替换格式化文本文件

时间:2016-06-09 19:53:59

标签: regex sublimetext2 sublimetext

我有一个如下所示的文本文件:

   Chanelle
   Jettie
   Winnie
   Jen
   Shella
   Krysta
   Tish
   Monika
   Lynwood
   Danae
   2649
   2466
   2890
   2224
   2829
   2427
   2816
   2648
   2833
   2453

我需要让它看起来像这样

   Chanelle   2649
   Jettie     2466
   ...        ...

我在sublime编辑器上做了很多尝试,但无法弄清楚这样做的正则表达式。有人可以证明是否可以做到。

2 个答案:

答案 0 :(得分:3)

我在Notepad ++中对以下内容进行了测试,但它应该可以普遍使用。

将此作为搜索字符串:

(?:(\s+[A-Za-z]+)(\r?\n))((?:\s*[A-Za-z]*\r?\n)+)\s+(\d+)

这是替代品:

$1 $4$2$3

一次运行替换将一次执行一行,如果多次运行它将继续替换行,直到没有匹配的行为止。

或者,如果您希望通过制表符对齐值,则可以将其用作替换,但在所有情况下都不匹配:

$1\t\t$4$2$3

答案 1 :(得分:2)

虽然正则表达式answer by SeinopSys可行,但您不需要正则表达式来执行此操作 - 相反,您可以利用Sublime的多个游标。

  1. 将光标放在第1行的开头,然后按住 Shift 选择所有名称。
    1. Ctrl Shift L Selection -> Split into Lines )将选区拆分为多行。
      1. Ctrl C 进行复制。

      2. 将光标放在第11行(第一个数字行)上,然后按 Ctrl Shift (Windows / OS X)或 Alt Shift (Linux)将光标放在每个数字行的开头。

        1. Ctrl V 将名称粘贴到数字前面。
          1. 您现在可以删除顶部的名称,并且您已完成设置。或者,您可以使用 Ctrl X 来剪切步骤3中的名称。