作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
例如,我有以下代码片段:
'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。
如果您可以表达您的正则表达式,使其确实是单个正则表达式组,并且应该替换整个行中的每个匹配项,那么您可以获得您想要的效果。
例如>?\(\s-*\)[0-9=]
至少对于显示的数据来说会给出所需的结果。
1 在 Emacs 中,\d
匹配 d
。应该是[0-9]
。
2通常您不希望对齐组中出现任何非空白,因为 Emacs 会替换该组的内容。
关于regex - 在 emacs 中,我可以在对齐正则表达式的正则表达式中使用交替吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37266484/
我是一名优秀的程序员,十分优秀!