关于align-regexp的使用

想要对齐一个下列格式的文本(使用|号进行分割的,| 是标点符号,不是小写的L):

|sdfsd|ddfd| |ddddddddddddddfffffff|sssssssssss| |ddddddfs|s99999999999999|

这个正则表达式要怎么书写呢? 看了一下官方的文档,并不是很清楚这样的格式写法。求教一下。

感觉一步到位似乎不行,想了个需要两步的办法

|sdfsd|ddfd|
|ddddddddddddddfffffff|sssssssssss|
|ddddddfs|s99999999999999|

C-u M-x align-regexp RET \w\(\)| RET 1 RET 1 RET y

|sdfsd                 |ddfd            |
|ddddddddddddddfffffff |sssssssssss     |
|ddddddfs              |s99999999999999 |

C-u M-x align-regexp RET |\(\)\w RET 1 RET 1 RET y

| sdfsd                 | ddfd            |
| ddddddddddddddfffffff | sssssssssss     |
| ddddddfs              | s99999999999999 |

C-u 用完整的正则表达式(默认会假设以 \(\s-*\) 开头,也就是说在 XXX 前面对齐,XXX 为你输入的表达式)。\w\(\)| 匹配下面的位置(用 ^^ 表示)。第一个 1 选择刚才的正则表达式的第一个分组,这个位置是用来插入空格的(以期达到对齐的目的)。第二个 1 表示插入一个空格。y 表示替换所有的匹配(如你所见,下面每一行都有两个匹配)。

|sdfsd|ddfd|
     ^^   ^^
|ddddddddddddddfffffff|sssssssssss|
                     ^^          ^^
|ddddddfs|s99999999999999|
        ^^              ^^

|\(\)\w 同理。

2 个赞

厉害厉害 :grin: