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

标签 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 1 y

我哪里错了? 谢谢。

最佳答案

所以问题是: \(\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 会替换该组的内容。

关于regex - 在 emacs 中,我可以在对齐正则表达式的正则表达式中使用交替吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37266484/

相关文章:

Javascript/Jquery - 正则表达式中的变量

Emacs:启动时重新打开上次 session 的缓冲区?

emacs - 在没有组织模式相关信息的情况下仅显示组织模式的笔记?

javascript - 换行后垂直对齐

java - 使用java正则表达式分别提取带小数的Alpha和Numeric包含String

JavaScript;正则表达式并排只有 5 位数字的字符串

scala - 如何将更改的 Scala 类自动重新加载到 SBT REPL

latex 对齐语法

html - CSS - 行高属性,它是如何工作的(简单)

c# - 允许在正则表达式中使用希伯来字母