Получение всего содержимого в теге <ul>с помощью Regex - PullRequest
2 голосов
/ 08 августа 2011

Я унаследовал веб-сайт, на котором мне приходится обновлять около 3500 файлов с очень похожим содержанием на 95% в каждом (страницы продукта).

Чтобы внести некоторые изменения, я использую Regex (в Dreamweaver) для массового редактирования.

Мне удалось все сделать нормально, но у меня возникла проблема с содержимым внутри тега.

Мне нужно иметь возможность захватить весь контент в этом теге и сохранить его, когда я заменю другой контент на странице (это одна из немногих вещей, содержание которых отличается от страницы к странице).

Вот пример:

<ul>
<li style="padding-top:10px; text-align:right;"><a href="http://www.website.com/additem.wws?Sku=ABC123&sup=AAA&mfr=BBB&price=99.99&core=10.00&qty=1&description=ITEM">Single Item - $99.99 <img src="../../images/buy-now-button.gif" alt="Buy Now" width="50" height="20" border="0">&nbsp;&nbsp;&nbsp;&nbsp;</a></li>
<li style="padding-top:10px; text-align:right;"><a href="http://www.website.com/additem.wws?Sku=ABC123-6&sup=AAA&mfr=BBB&price=299.99&core=60.00&qty=1&description=INJECTOR"><strong>Set of 6 Items - $299.99</strong> <img src="../../images/buy-now-button.gif" alt="Buy Now" width="50" height="20" border="0">&nbsp;&nbsp;&nbsp;&nbsp;</a></li>
<li style="padding-top:10px"><img src="../../images/free_shipping.jpg" alt="Free Upgrade." width="227" height="107">  </li>
</ul>

Я бы пошел более индивидуально и получил бы содержимое на отдельных вкладках <li>, но проблема в том, что на некоторых страницах есть только один <li> в пределах <ul> или до 6 в зависимости от количества вариантов продукта. на этой странице.

Итак, мой общий вопрос таков: как мне захватить весь контент (включая новые строки, другие теги и т. Д.) Внутри данного тега и сохранить его для замены остального содержимого? Я знаю, как использовать круглые скобки вокруг содержимого, а затем $ # в разделе «Заменить».

Веб-сайты, над которыми я работал до сих пор, были намного меньше, и я не испытывал особой необходимости в Regex, потому что обычно было проще вносить изменения вручную или просто использовать буквальный текст в Find / Replace.

1 Ответ

7 голосов
/ 08 августа 2011

Насколько сложны эти веб-страницы?Если элементы <ul> никогда не вкладываются в другие элементы <ul>, и вам не нужно иметь дело с поддельными тегами внутри (например) комментариев SGML или разделов CDATA, это, вероятно, все, что вам нужно:

<ul>[\s\S]*?</ul>

[\s\S] - это то, как вы сопоставляете любой символ , включая новые строки в регулярных выражениях JavaScript (это то, что использует Dreamweaver, или я так читал).

*? говорит, что он совпадает с нулем или более, неохотно - это означает, что он прекращает сопоставление, как только станет возможным совпадение следующей части регулярного выражения (</ul>).

...