【问题标题】:Sublime Text: Replace with fixed width field(using regex)Sublime Text:用固定宽度字段替换(使用正则表达式)
【发布时间】:2017-04-10 04:44:48
【问题描述】:

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

例如,我有几行文本,例如:
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: 学分制)
在替换表达式中,能够为每个捕获组设置固定宽度即可解决问题。

【问题讨论】:

  • 你不能只是改变字段的顺序,所以课程名称是最后一个字段吗?示例:CS 210 (0-0-3-3) Data Structures Laboratory
  • @sergioFC 好吧,你就在这里.. 但这仅在这个特定示例中有效。可能会有更多可变长度的列。无论如何,好主意.. :)
  • 我认为这不能只使用正则表达式来完成

标签: regex replace sublimetext3


【解决方案1】:
  1. 用正则表达式\s{2,} 找到两个以上的连续空格,并将其替换为其他字段分隔符。即管道(|)
  2. 现在每个字段都用管道分隔,这很容易管理。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-02
    • 2021-07-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-31
    • 2013-05-19
    相关资源
    最近更新 更多