Regex 升华文本:替换为固定宽度字段(使用正则表达式)

Regex 升华文本:替换为固定宽度字段(使用正则表达式),regex,replace,sublimetext3,Regex,Replace,Sublimetext3,有没有办法将通过正则表达式找到的表达式(包含多个字段的行)替换为升华文本中固定宽度格式的字段?例如,我有几行文本,如: CS 210 Data Structures Laboratory (0-0-3-3) CS 221 Digital Design (3-0-0-6) CS 241 System Software Laboratory (0-0-

有没有办法将通过正则表达式找到的表达式(包含多个字段的行)替换为升华文本中固定宽度格式的字段?

例如,我有几行文本,如:

CS 210         Data Structures Laboratory                     (0-0-3-3)
CS 221                  Digital Design             (3-0-0-6)
CS 241     System Software Laboratory               (0-0-3-3)
CS 203          Formal Languages and Automata Theory         (3-0-0-6)
我需要用这样的东西来代替它们:

CS 210          Data Structures Laboratory                 (0-0-3-3)
CS 221          Digital Design                             (3-0-0-6)
CS 241          System Software Laboratory                 (0-0-3-3)
CS 203          Formal Languages and Automata Theory       (3-0-0-6)
每行中的字段可通过正则表达式搜索单独获得:

([A-Z]{2} +[\d]{3}) +((?: *\-* *\w+)+) +([\(\-\d\)]{9})
($1:课程号,$2:课程名称,$3:学分制)
在替换表达式中,能够为每个捕获组设置固定宽度将解决此问题

  • 用regex
    \s{2,}
    查找两个以上的连续空格,并用其他字段分隔符替换它。i、 e.管道(|)
  • 现在,每个字段都用一个管道隔开,这很容易管理

  • 你能不能改变字段的顺序,让课程名称成为最后一个字段?示例:
    cs210(0-0-3-3)数据结构实验室
    @sergioFC嗯,你就在这里。。但这只适用于这个特定的例子。可能会有更多长度可变的列。无论如何,这主意不错:)我认为这不能只用正则表达式