我有几乎1毫米的xml数据行,我想用几乎相同但有些不同的文本替换10多个不同的内容。 见下面的例子
<wp:postmeta>
<wp:meta_key>_edit_last</wp:meta_key>
<wp:meta_value><![CDATA[5590]]></wp:meta_value>
</wp:postmeta>
<wp:postmeta>
<wp:meta_key>slide_template</wp:meta_key>
<wp:meta_value><![CDATA[default]]></wp:meta_value>
</wp:postmeta>
<wp:postmeta>
<wp:meta_key>_jetpack_related_posts_cache</wp:meta_key>
<wp:meta_value><![CDATA[a:0:{}]]></wp:meta_value>
</wp:postmeta>
<wp:postmeta>
<wp:meta_key>vibe_author</wp:meta_key>
<wp:meta_value><![CDATA[H]]></wp:meta_value>
</wp:postmeta>
<wp:postmeta>
<wp:meta_key>vibe_prev_next</wp:meta_key>
<wp:meta_value><![CDATA[H]]></wp:meta_value>
</wp:postmeta>
假设我要替换
<wp:postmeta>
<wp:meta_key>vibe_author
和或
vibe_prev_next</wp:meta_key>
<wp:meta_value><![CDATA[H]]></wp:meta_value>
</wp:postmeta>
我应用此代码:
(<wp:postmeta>
<wp:meta_key>)vibe_author|vibe_prev_next.*?</wp:postmeta>
但它只选择
<wp:postmeta>
<wp:meta_key>vibe_author
或
vibe_prev_next</wp:meta_key>
<wp:meta_value><![CDATA[H]]></wp:meta_value>
</wp:postmeta>
如何选择
<wp:postmeta>
<wp:meta_key>vibe_author</wp:meta_key>
<wp:meta_value><![CDATA[H]]></wp:meta_value>
</wp:postmeta>
和
<wp:postmeta>
<wp:meta_key>vibe_prev_next</wp:meta_key>
<wp:meta_value><![CDATA[H]]></wp:meta_value>
</wp:postmeta>
一次?
答案 0 :(得分:0)
你很接近,但你把交替|
放在表达式的顶层。
它应该已应用于您需要在一组之间交替的值,例如: (vibe_author|vibe_prev_next)
尝试使用此表达式:
(?s)<wp:postmeta>\s*<wp:meta_key>(?:vibe_author|vibe_prev_next).*?</wp:postmeta>