1

我有一个手动编辑的 xml 文件。xml文件结构如下:

<order>
    <id>1</field>
    <current_execution_status>REGENERATED</field>
    <generated_time>2012-12-01 17:55:00</field>
    <generation_status>UNKNOWN</field>
    <priority>0</field>
    <type>NORMAL</field>
    <assigned_vehicle>1</field>
    <assigned_drop_location>1</field>
    <assigned_pick_location>1</field>
    <generation_by_user_name>ABC</field>
    <material>1</field>
    <order_cancel_detail />
    <order_drop_detail />
    <order_pick_detail />
</order>

我想用field值前面的相应“字段名称”替换每次出现的 。例如<id>1</field>应该像这样变成<id>1</id>,等。<current_execution_status>REGENERATED</current_execution_status>但没有得到我应该在vim.

4

2 回答 2

4
:%s/<\([^<>]*\)>\([^<>]*\)<\/field>/<\1>\2<\/\1>/
于 2012-12-12T07:49:56.143 回答
2

这个怎么样:

:%s/<\(.*\)>\(.*\)<\/field>$/<\1>\2<\/\1>/

关于 Vim 正则表达式的注意事项:

  1. 捕获/分组使用\(and ')' 而不是 '(', ')'。('(', ')') 仅表示打开/关闭括号的实际字符。
  2. 捕获内存\1\2
  3. /需要像往常一样逃脱\/
于 2012-12-12T07:48:19.630 回答