我有一个我手动编辑的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
中没有得到我的正则表达式。
答案 0 :(得分:4)
:%s/<\([^<>]*\)>\([^<>]*\)<\/field>/<\1>\2<\/\1>/
答案 1 :(得分:2)
这个怎么样:
:%s/<\(.*\)>\(.*\)<\/field>$/<\1>\2<\/\1>/
有关Vim regexp的注意事项:
\(
和')'捕获/分组,而不是'(',')'。 ('(',')')只是意味着
打开/关闭parens的实际字符。\1
,\2
等。/
需要像往常一样进行转义\/