Как заменить весь текст между двумя фразами регулярными выражениями в Notepad++ или Textpad?

У меня около 50 html-документов, и мне нужно заменить текст между

<!DOCTYPE

а также

<!-- start content -->

с

<?php require("header.php"); ?>

Из того, что я прочитал, Notepad ++ не поддерживает многострочные регулярные выражения, но я подумал, что могу указать это и на вопрос. Я новичок в регулярных выражениях, поэтому мне нужен кто-то, кто скажет мне, как это сделать. Заранее спасибо!


person paep3nguin    schedule 03.10.2010    source источник


Ответы (1)


У меня не установлены ни Notepad++, ни Textpad, поэтому я не могу сказать наверняка, но там может работать что-то из следующего:

Ищи

  1. <!DOCTYPE[\s\S]*?<!-- start content --> or
  2. <!DOCTYPE.*?<!-- start content --> с установленной опцией "Точка соответствует новой строке" или
  3. (?s)<!DOCTYPE.*?<!-- start content -->

и замените это на <?php require("header.php"); ?>.

Это удалит все между двумя фразами (включая сами фразы). Если вы этого не хотите (я не уверен из вашего вопроса), то вы, вероятно, хотите сохранить то, что находится в первой строке после <!DOCTYPE, верно? Так:

Найдите (<!DOCTYPE[^\r\n]*)[\s\S]*?<!-- start content --> (или (?s)(<!DOCTYPE[^\r\n]*).*?<!-- start content --> и т. д.),

и заменить на $1<?php require("header.php"); ?><!-- start content -->

person Tim Pietzcker    schedule 03.10.2010
comment
Грр... По какой-то причине ни один из них не работает ни в Textpad, ни в Notepad++. Я думал, что Textpad поддерживает многострочные регулярные выражения. Можете ли вы порекомендовать текстовый редактор, который это делает? - person paep3nguin; 03.10.2010
comment
EditPadPro — это редактор с лучшей поддержкой регулярных выражений. - person Tim Pietzcker; 03.10.2010
comment
Хорошо, теперь я думаю, что я просто делаю что-то не так, потому что они не работают и в editpadpro ... Я, вероятно, просто делаю глупую ошибку. - person paep3nguin; 03.10.2010
comment
Что именно вы подразумеваете под не работает? Совпадают ли они слишком много, слишком мало или вообще ничего? - person Tim Pietzcker; 03.10.2010
comment
Ни один из них не смог найти текст. Они ничего не совпали. - person paep3nguin; 03.10.2010
comment
Упс. Я только что понял, что пропустил -- в бите start content. Виноват. Я отредактировал свой ответ и надеюсь, что теперь он работает. Извиняюсь. - person Tim Pietzcker; 03.10.2010
comment
На самом деле я заметил это, поэтому я просто искал ‹!-- start content. Я нашел еще одну утилиту под названием grepwin, и в ней очень хорошо работает регулярное выражение! Я предполагаю, что просто Textpad и Notepad++ работали не так хорошо. Большое спасибо! - person paep3nguin; 03.10.2010
comment
Большой. Но он должен был совпасть и в EditPadPro (однако вам нужно установить флажок «Регулярное выражение» в поле поиска). - person Tim Pietzcker; 03.10.2010