Некоторые предпосылки: мы добавляем стиль к нашему проекту Middleman. Это для других разработчиков, поэтому мы хотим, чтобы наши примеры кода были удобочитаемыми. Однако мы не хотим обновлять код в нескольких местах, когда мы меняем компонент.Regex удаляет множественные пробелы и разрывы строк внутри HTML-тега
Мы используем redcarpet для анализа разметки и создания примеров кода.
<%= partial '../partials/component' %>
```html
<%= partial '../partials/component' %>
```
Это, однако, оставляет очень грязные и нечитаемые примеры кода. Мы можем хорошо их очистить с помощью htmlbeautifier. Но у нас по-прежнему есть проблема с несколькими пробелами и разрывами строк внутри HTML-тегов.
Это часто выглядит следующим образом:
<article class="default-s-sans teaser-media"
data-item-ratio="16x9"
data-background-color="d-blue"
>
Мы хотим, чтобы удалить лишние пробельные и разрывы строк внутри тега, то есть между <
и >
. Но не между элементами, поэтому он должен оставить это без изменений:
<div>
<span class="price">$100</span>
<span>
Word word
</span>
</div>
Я получил this far:
html.gsub(/(?<=<)(\s{2,})(?>)/, ' ')
Но это будет соответствовать только пробельные между <
и >
, если нет ничего другого, между ними.
Как я могу сопоставить пробелы между <
и >
, но разрешить другим символам?
Это может быть слишком сложным, чтобы только 1 регулярное выражение, это работает намного лучше. Я изменил первое регулярное выражение, чтобы убедиться, что я только сопоставляю один тегг: '/ <([^>] +)> /' – pstenstrm