如何使用正则表达式选择多个不同的文本/内容

时间:2016-04-22 13:39:19

标签: replace expression notepad++

我有几乎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>

一次?

1 个答案:

答案 0 :(得分:0)

你很接近,但你把交替|放在表达式的顶层。

它应该已应用于您需要在一组之间交替的值,例如: (vibe_author|vibe_prev_next)尝试使用此表达式:

(?s)<wp:postmeta>\s*<wp:meta_key>(?:vibe_author|vibe_prev_next).*?</wp:postmeta>