gpt4 book ai didi

regex - M-x align-regexp 删除文本?

转载 作者:行者123 更新时间:2023-12-04 20:48:05 26 4
gpt4 key购买 nike

这是我尝试格式化的示例文本:

(9 12 19 38 0 -39 -20 -13 -10)
(7 9 14 29 0 -30 -15 -10 -8)
(4 6 9 19 0 -20 -10 -7 -5)
(2 3 4 9 0 -10 -5 -4 -3)
(0 0 0 0 0 0 0 0 0)
(-3 -4 -5 -10 0 9 4 3 2)
(-5 -7 -10 -20 0 19 9 6 4)
(-8 -10 -15 -30 0 29 14 9 7)
(-10 -13 -20 -39 0 38 19 12 9)

我希望每一列都对齐数字,(即,如果有减号,请添加额外的空格)。

如果我这样做:C-uM-x align-regexp返回 \([[:digit:]]+\)撤退 y
我明白了:
(9  12 19 38 0 -3 -2 -1 -1)
(7 9 14 29 0 -3 -1 -1 -8)
(4 6 9 19 0 -2 -1 -7 -5)
(2 3 4 9 0 -1 -5 -4 -3)
(0 0 0 0 0 0 0 0 0 )
(-3 -4 -5 -1 0 9 4 3 2 )
(-5 -7 -1 -2 0 19 9 6 4 )
(-8 -1 -1 -3 0 29 14 9 7 )
(-1 -1 -2 -3 0 38 19 12 9 )

这非常接近,但不是我想要的。

如果我尝试修改表达式以包含减号,如下所示: \(-?[[:digit:]]+\)
然后我得到这个:
(9 1 1 3 0 - - - -)
(7 9 1 2 0 - - - -)
(4 6 9 1 0 - - - -)
(2 3 4 9 0 - - - -)
(0 0 0 0 0 0 0 0 0)
(- - - - 0 9 4 3 2)
(- - - - 0 1 9 6 4)
(- - - - 0 2 1 9 7)
(- - - - 0 3 1 1 9)

这是一个错误,还是有什么我不知道的?

最佳答案

与指定组(通常是组 1)匹配的文本被扩展或缩小,因此组中的非空白字符会被删除,如您所见。除非,也就是说,启用对齐,这通过向 align-regexp 提供负组数来指示。 :

C-uM-x align-regexp返回 \(\s-*-?\)[0-9]+返回 -1退订y
如果需要,您可以通过在匹配组中包含数字来对齐每个数字的个位上的列:

C-uM-x align-regexp返回 \(\s-*-?[0-9]+\)返回 -1退订y
在任何一种情况下,都会在每个左括号后插入一个额外的空格。我看不出有什么办法可以保留 align-regexp这样做,但如果你经常这样做,你可以将它包装在一个执行 align-regexp 的命令中。 ,然后替换正则表达式 "^( ""("在原始区域的任何地方。

关于regex - M-x align-regexp 删除文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13921664/

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