gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 09:26:49 24 4
gpt4 key购买 nike

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

'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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com