2016-04-22 28 views
0

我有近1個milllon行的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

您已經很近了,但是您將替換|置於表達式的頂層。

它應該已經應用到您需要的一組值, (vibe_author|vibe_prev_next)嘗試使用此表達式:

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

它不工作.. –

+0

你有搜索模式設置爲正則表達式?你還使用什麼版本的記事本++? – JonM

+0

是的,當然,我檢查正則表達式和匹配新行單選按鈕 –

相關問題