在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、 把所有这些都变成了答案。