我有一些看似这样的硬编码数据:
s1 = [ ...
[-225.053,-74.050,4.801]' ...
[-82.053,68.950,4.801]' ...
[-82.053,-74.050,4.801]' ...
[-82.053,-217.050,4.801]' ...
[60.947,-74.050,4.801]' ...
];
我有一堆这样的条目。我意识到每个向量的前两个条目的顺序不正确,所以它不应该是[a,b,c],而应该是[b,a,c]。
我希望代码清晰,所以我想交换硬编码的值。 我如何使用regexp交换vim中的值?
答案 0 :(得分:1)
找到了解决方案。假设没有空格,以下内容将起作用:
s/\(\-\?\d\+\.\d\+\),\(\-\?\d\+\.\d\+\),\(\-\?\d\+\.\d\+\)/\2,\1,\3/gc
这是这个的3倍:
\(\-\?\d\+\.\d\+\)
匹配多个[optional sign]a.b
答案 1 :(得分:0)
首先,您应该知道如何交换两个值。
:%s/\(123\),\(456\)/\2,\1/
其次,您应该替换为正确的正则表达式。
[-225.053,-74.050,4.801]
这些数字被“,”分开,所以你可以使用这个
\[\(.*\),\(.*\),\(.*\)\]
所以,最后,正则表达式是
:%s/\[\(.*\),\(.*\),\(.*\)\]/[\3,\1,\2]/