5

これが私がフォーマットしようとしているテキストの例です:

(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-xalign-regexpRET\([[:digit:]]+\)RETRETRETy

私はこれを手に入れます:

(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)

これはバグですか、それとも私が知らないことがありますか?

4

1 に答える 1

3

指定されたグループ(通常はグループ1)と一致するテキストは拡大または縮小されるため、ご覧のとおり、グループ内の空白以外の文字は削除される可能性があります。つまり、正当化が有効になっていない限り、これはのグループ番号をalign-regexp次のように指定することで示されます。

C-uM-xalign-regexpRET\(\s-*-?\)[0-9]+RET-1RETRETy

必要に応じて、一致グループに数字を含めることにより、各数値の1桁の列を揃えることができます。

C-uM-xalign-regexpRET\(\s-*-?[0-9]+\)RET-1RETRETy

いずれの場合も、開き括弧の後に余分なスペースが挿入されます。これを防ぐ方法はわかりませんalign-regexpが、頻繁に行う場合は、を実行するコマンドでラップしてから、正規表現を元の領域のすべての場所にalign-regexp置き換えることができます。"^( ""("

于 2012-12-17T21:54:01.820 に答える