在emacs中,我可以在regexp中为align regexp使用交替吗?

在emacs中,我可以在regexp中为align regexp使用交替吗?,regex,emacs,alignment,text-alignment,Regex,Emacs,Alignment,Text Alignment,例如,我有以下代码片段: 'abc' => 1, 'abcabc' =>2, 'abcabcabc' => 3, 我想将其格式化为: 'abc' => 1, 'abcabc' => 2, 'abcabcabc' => 3, 我知道有更简单的方法,但在这里我只想练习我对align regexp的理解。我已尝试此命令,但无效: C-u M-x align-regexp \(\s-+\)=\|\(>\s-*\)\d 1

例如,我有以下代码片段:

'abc' => 1,  
'abcabc' =>2,  
'abcabcabc' => 3,
我想将其格式化为:

'abc'       => 1,  
'abcabc'    => 2,  
'abcabcabc' => 3,  
我知道有更简单的方法,但在这里我只想练习我对
align regexp
的理解。我已尝试此命令,但无效:

C-u M-x align-regexp \(\s-+\)=\|\(>\s-*\)\d 1 1 y
我错在哪里?
谢谢

所以问题是:使用
\(\s-+\)=\\\\(>\s-*\)\d
匹配
\(\s-+\)=
\(>\s-*\)\d
1,我们可以使用
对齐regexp
在一行中对齐这些可选项吗

答案是否定的--
align regexp
修改regexp的一个特定匹配组。在本例中,它是组1,组1是开头的
\(\s-+\)
。regexp的第1组不随实际匹配的内容而变化,因此它从不引用
\(>\s-*\)
2

但是,如果您可以表达您的regexp,使它实际上是一组regexp,应该为整个行中的每个匹配项替换它,那么您可以得到想要的效果

e、 g.
?\(\s-*\)[0-9=]
将——至少对于显示的数据——给出所需的结果

Emacs
\d
中的1匹配
d
。这应该是
[0-9]


2您通常不希望对齐组中有任何非空白,因为Emacs会替换该组的内容。

@phils是的,我知道。这正是我想要的。我的问题是它没有按预期的方式工作。@phils,感谢您指出
\d
问题。我忘了emacs不支持它。我会试试看是否能改进正则表达式。再次感谢!n、 把所有这些都变成了答案。