Совпадение всего кода между двумя тегами HTML с использованием REGEX
Я ищу жадное совпадение RegEx, чтобы заменить весь текст в ряде файлов HTML между </title>
а также </head>
(Я объединил множество файлов JavaScript, чтобы минимизировать количество http-запросов).
Я прогуглил это, но большинство решений, кажется, не работают для меня. (Что естественно заставляет меня предположить, что я не прав)
Это мое текущее выражение, которое, кажется, не работает:-
</title>([^<]*)</head>
Я использую Dreamweaver 8 поиска и замены.
Между двумя тегами есть несколько включений для различных файлов javascript, например:- которые различаются для каждой страницы отдельно.
Я хочу заменить все эти два тега на всех страницах последовательным списком включений CSS / JavaScript.
3 ответа
Если DreamWeaver regex поддерживает прогнозные утверждения:
</title>((?:(?!</head>)[\s\S])*)</head>
Применяется обычное предупреждение "не работайте с HTML с регулярным выражением, в какой-то момент это не удастся". Точки, где это может потерпеть неудачу, могут быть:
<script>var str = "something that contains </head>";<script>
или же
<!-- a comment that refers to </head> -->
среди других созвездий.
Вы пытались использовать что-то вроде http://www.regextester.com/? Вы могли бы проверить свое регулярное выражение вживую?
Есть и другие подходы, которые вы можете использовать, чтобы "проверить" ваше дело.
//if i consider you are using php as you are looking for regex
//regex : '#\<\title\>(.+?)\<\/head\>#s'
//in php
$content_processed = preg_replace_callback(
'#\<\title\>(.+?)\<\/head\>#s',
create_function(
'$matches',
'return htmlentities($matches[1]);'
),
$content
);
// this will return content between the tag