Совпадение всего кода между двумя тегами HTML с использованием REGEX - PullRequest
2 голосов
/ 01 сентября 2010

Я ищу жадное совпадение RegEx для замены всего текста в ряде файлов HTML между </title> и </head> (я объединил множество файлов JavaScript, чтобы минимизировать количество запросов http).

Я погуглил, но большинство решений, похоже, не работают для меня. (Что, естественно, заставляет меня предположить, что я ошибаюсь)

Это мое текущее выражение, которое, похоже, не работает: -

</title>([^<]*)</head>

Я использую Dreamweaver 8 для поиска и замены.

Между двумя тегами есть несколько включений для различных файлов JavaScript, например: - которые варьируются на странице за страницей.

Я хочу заменить все между этими двумя тегами на всех страницах последовательным списком включений CSS / JavaScript.

Ответы [ 3 ]

3 голосов
/ 01 сентября 2010

Если регулярное выражение DreamWeaver поддерживает прогнозные утверждения:

</title>((?:(?!</head>)[\s\S])*)</head>

Применимо обычное предупреждение «не работайте с HTML с регулярным выражением, в определенный момент это не удастся».Точки, где это не получится, могут быть:

<script>var str = "something that contains </head>";<script>

или

<!-- a comment that refers to </head> -->

среди других созвездий.

0 голосов
/ 01 сентября 2010
//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
0 голосов
/ 01 сентября 2010

Вы пытались использовать что-то вроде http://www.regextester.com/? Вы могли бы проверить свое регулярное выражение вживую?

Существуют и другие подходы, которые вы можете использовать для «проверки» вашего дела.

...