Составление регулярного выражения в Sublime
Повторяю условие из предыдущего вопроса. Варианты в ответе работают, но есть дополнительные вопросы (под условием).
Есть такая разметка с разорванными тегами:
<ul>
< li>цвет: синий< / li>
< li > Материал: ПВХ< / li>
< li>Размер: 80 * 40см< / li>
< li>вес: 123 г< / li>
</ul>
На выходе должно получиться так:
<ul>
<li>Цвет: синий</li>
<li>Материал: ПВХ</li>
<li>Размер: 80 * 40см</li>
<li>Вес: 123 г</li>
</ul>
<h3 class="section-title font-opensans">Puluz PU5201L 80x40см blue - купить< / h3>
< p class="section-content">Купить Фон для предметной съемки Puluz PU5201L 80x40см blue в специализированном магазине фото/видео гаджетов. Официальная гарантия от <a href="http://www.puluz.com/">производителя</a>. Бесплатная доставка. Просмотреть все фото/видео гаджеты: <a href="https://site.com">site.com< / a>< / p>
Нужно убрать все пробелы в открывающем теге, убрать их в закрывающем, убрать слева и справа от тегов. А также заменить строчную первую букву после > на прописную. Есть две проблемы:
- В последнем абзаце предложенное решение не срабатывает на
</a> - Можно ли предложенные варианты объединить в один?
Ответы (2 шт):
Если я правильно понимаю ваш вопрос, то это делается довольно просто (использовал Sublime text 3).
Выбираем
Find -> Replace...
В Find пишем: <[ ]+/[ ]+
В Replace пишем: </
После этого повторяем операцию замены с другими регулярными выражениями:
- Find:
<[ ]+Replace:< - Find:
[ ]+>[ ]*Replace:> - Find:
>([а-я])Replace:>\U$1\E
Возможно, можно сделать одно регулярное выражение вместо применения нескольких, однако я не вижу в этом смысла. На выходе я получил:
<ul>
<li>Цвет: синий</li>
<li>Материал: ПВХ</li>
<li>Размер: 80 * 40см</li>
<li>Вес: 123 г</li>
</ul>
<h3 class="section-title font-opensans">Puluz PU5201L 80x40см blue - купить</h3>
<p class="section-content">Купить Фон для предметной съемки Puluz PU5201L 80x40см blue в специализированном магазине фото/видео гаджетов. Официальная гарантия от <a href="http://www.puluz.com/">производителя</a>. Бесплатная доставка. Просмотреть все фото/видео гаджеты: <a href="https://site.com">site.com</a></p>
Найти
\h*<\h*(\/?)\h*([a-z]{1,3})\h*>\h*(\p{L})?
Заменить
<$1$2>\U$3
Отрегулировать количество символов в теге можно в этой части ...[a-z]{1,3}...
где {1- минимальное количество совпадений
,3} - максимальное количество совпадений
Текст для замены:
<ul>
< li>цвет: синий < / li>
< li > Материал: ПВХ < / li>
< li>Размер: 80 * 40см< / li>
< li>вес: 123 г< / li>
< tag> привет мир< /tag>
<h3 class="section-title font-opensans">Puluz PU5201L 80x40см blue - купить</h3>
<p class="section-content">Купить Фон для предметной съемки Puluz PU5201L 80x40см blue в специализированном магазине фото/видео гаджетов. Официальная гарантия от <a href="http://www.puluz.com/">производителя</a>. Бесплатная доставка. Просмотреть все фото/видео гаджеты: <a href="https://site.com">site.com< / a></p>
</ul>
Результат:
<ul>
<li>Цвет: синий</li>
<li>Материал: ПВХ</li>
<li>Размер: 80 * 40см</li>
<li>Вес: 123 г</li>
<tag>Привет мир</tag>
<h3 class="section-title font-opensans">Puluz PU5201L 80x40см blue - купить</h3>
<p class="section-content">Купить Фон для предметной съемки Puluz PU5201L 80x40см blue в специализированном магазине фото/видео гаджетов. Официальная гарантия от <a href="http://www.puluz.com/">производителя</a>. Бесплатная доставка. Просмотреть все фото/видео гаджеты: <a href="https://site.com">site.com</a></p>
</ul>