在 emacs 中,我可以在 align-regexp 的正则表达式中使用交替吗?
In emacs, can I use alternation in the regexp for align-regexp?
例如,我有以下片段:
'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,我们可以使用 align-regexp
对齐整行中的 每个 选项吗?
答案是否定的 -- align-regexp
修改一组特定的正则表达式匹配项。在本例中是第 1 组,第 1 组是开头的 \(\s-+\)
。正则表达式的第 1 组不会根据实际匹配的内容而变化,因此它从不引用 \(>\s-*\)
2.
如果你能表达你的正则表达式,它真的是一组正则表达式,应该替换整个行的 every 匹配,你可以获得你想要的效果, 然而。
例如>?\(\s-*\)[0-9=]
将——至少对于显示的数据——给出期望的结果。
1 在 Emacs 中 \d
匹配 d
。那应该是 [0-9]
.
2您通常不希望对齐组中有任何非空白,因为 Emacs 会替换该组的内容。
例如,我有以下片段:
'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,我们可以使用 align-regexp
对齐整行中的 每个 选项吗?
答案是否定的 -- align-regexp
修改一组特定的正则表达式匹配项。在本例中是第 1 组,第 1 组是开头的 \(\s-+\)
。正则表达式的第 1 组不会根据实际匹配的内容而变化,因此它从不引用 \(>\s-*\)
2.
如果你能表达你的正则表达式,它真的是一组正则表达式,应该替换整个行的 every 匹配,你可以获得你想要的效果, 然而。
例如>?\(\s-*\)[0-9=]
将——至少对于显示的数据——给出期望的结果。
1 在 Emacs 中 \d
匹配 d
。那应该是 [0-9]
.
2您通常不希望对齐组中有任何非空白,因为 Emacs 会替换该组的内容。