VIM正则表达式复制完全匹配

时间:2013-07-22 20:44:54

标签: regex vim exact-match

我想使用正则表达式从VIM文档中提取数据,但我只需要精确匹配而不是空洞行。基本上只需复制:%s将替换。

简单示例:

<td>sell:8092.23</td>
<td>buy:850.00</td>
<td>sell:99.99</td>

...并提取数字:

8092.23
850.00
99.99

这在VIM中是否可行?如果可以的话? 提前谢谢。

2 个答案:

答案 0 :(得分:1)

使用带有锚点的正则表达式到行的开头和结尾,进行分组以保留数字并用它替换整行。从shell运行以下命令,它将创建一个新文件output.txt,其中包含未修改输入文件的数字:

vim -u NONE -N -c '
    set backup |
    %s/\v^\D+(\d+\.\d*).*$/\1/ |
    saveas! output.txt |
    q!
' infile

答案 1 :(得分:1)

试试这个:

%s/\v.{-}([0-9.]+).*/\1/
相关问题