vim - 查找所有子匹配以重新排序句子
问题描述
在 Windows 7 上使用 gvim 8.0,我想重新排序部分句型:
前:
Execution time: 0.22s Statement 1 of 8 finished (2018-05-18 06:48:35.231)
Execution time: 0.22s Statement 1 of 8 finished (2018-05-18 06:54:01.259)
Execution time: 0.22s Statement 1 of 8 finished (2018-05-18 07:05:54.480)
<et al>
后:
Statement 1 of 8 finished (2018-05-18 06:48:35.231) Execution time: 0.22s
Statement 1 of 8 finished (2018-05-18 06:54:01.259) Execution time: 0.22s
Statement 1 of 8 finished (2018-05-18 07:05:54.480) Execution time: 0.22s
<et al>
我以为我会捕获子匹配,然后替换;我似乎无法获得超过一个子匹配 - 我尝试过:
/\v^([^S]*)
并且匹配了我想要的第一个子匹配,但是:
/\v^([^S]*),([^S]*)
似乎什么也没找到。
这是正确的方法吗?我究竟做错了什么?
解决方案
对于您的输入句子,您可以使用替换:
%s/\v(.*) (Statement.*)/\2 \1/g
这将捕获之前的文本Statement
并将其放在句子的末尾。输出:
Statement 1 of 8 finished (2018-05-18 06:48:35.231) Execution time: 0.22s
Statement 1 of 8 finished (2018-05-18 06:54:01.259) Execution time: 0.22s
Statement 1 of 8 finished (2018-05-18 07:05:54.480) Execution time: 0.22s
推荐阅读
- excel - 使用嵌套 if 语句删除数据行
- c++ - 在不复制的情况下返回 std::function
- node.js - IBM Watson Speech-to-Text“识别音频”方法?
- java - Java Itext PDF - 我可以更改 AcroFields 的输入行吗?
- c - 将 nodemcu 与 000webhost 数据库连接
- javascript - 在 eventListener 中使用 .replace() 来更改某些文本,但无法正常工作
- sas - 如何标记一个重量序列,一旦超过30个重量,剩下的标记为1?
- go - 使用具有 OOP 风格的 fyne 小部件
- javascript - 低比例模型不在 THREE.js 中绘制
- regex - 正则表达式(第一次匹配后全部(没有第一次匹配))