在emacs中,我可以在正则表达式中使用align-regexp的交替吗?

Jus*_*ner 2 regex emacs alignment text-alignment

例如,我有以下代码段:

'abc' => 1,  
'abcabc' =>2,  
'abcabcabc' => 3,
Run Code Online (Sandbox Code Playgroud)

我想将其格式化为:

'abc'       => 1,  
'abcabc'    => 2,  
'abcabcabc' => 3,  
Run Code Online (Sandbox Code Playgroud)

我知道有更简单的方法可以做到这一点,但在这里我只想练习我的理解align-regexp.我试过这个命令,但它不起作用:

C-u M-x align-regexp \(\s-+\)=\|\(>\s-*\)\d 1 1 y
Run Code Online (Sandbox Code Playgroud)

哪里我错了?谢谢.

phi*_*ils 5

所以问题是:通过\(\s-+\)=\|\(>\s-*\)\d匹配\(\s-+\)= \(>\s-*\)\d1,我们可以使用align-regexp在整个生产线上对齐每个备选方案.

答案是否 - align-regexp修改正则表达式的一个特定匹配组.在这种情况下,它是组1,组1 \(\s-+\)在开头.正则表达式的第1组不会根据实际匹配的内容而变化,因此它永远不会引用\(>\s-*\)2.

如果你可以表达你的正则表达式,它确实是一组正则表达式,应该替换整个行中的每个匹配,你可以得到你想要的效果.

例如>?\(\s-*\)[0-9=],至少对于所显示的数据,会给出所需的结果.

1在Emacs \d比赛中d.那应该是[0-9].
2通常不希望在对齐组中有任何非空格,因为Emacs会替换该组的内容.