2016-04-22 2 views
0

У меня есть почти 1 миллионная строка данных xml, я хочу заменить более 10 различных контента почти таким же, но некоторым другим текстом. пример нижеКак выбрать mulitple другой текст/содержимое с помощью регулярного выражения

<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

да, конечно, я проверяю регулярное выражение и сопоставляю новую строку радиосвязи –

Смежные вопросы