Я пытаюсь создать регулярное выражение для поиска пустых тегов HTML, которые могут иметь встроенный JSTL. Я использую Perl для моего соответствия.
Пока что я могу сопоставить любой пустой HTML-тег, не содержащий JSTL, со следующим?
/<\w+\b(?!:)[^<]*?>\s*<\/\w+/si
\b(?!:)
будет избегать сопоставления с открывающим тегом JTSL, но это не касается того, может ли JSTL находиться внутри самого тега HTML (что допустимо). Я только хочу знать, если этот тег HTML не имеет дочерних элементов (только пробел или пустой). Поэтому я ищу шаблон, который будет соответствовать обоим следующим:
<div id="my-id">
</div>
<div class="<c:out var="${my.property}" />"></div>
В настоящее время первый div совпадает. Второго нет. Это выполнимо? Я перепробовал несколько вариантов, используя утверждения о себе, и начинаю думать, что это не так. Однако я не могу сказать наверняка или сформулировать, почему это не так.
Редактировать: Я не пишу что-то, чтобы интерпретировать код, и я не заинтересован в использовании парсера. Я пишу сценарий, чтобы указать на потенциальные проблемы / упущения. И в этот момент, Мне тоже любопытно , чтобы посмотреть, есть ли что-то умное с предвкушением или взглядом за спиной, которое я могу пропустить. Если вас беспокоит, что я пытаюсь "1018 * решить * проблему таким образом", не думайте, что вы ищете решение . Для меня это больше вызов и возможность больше узнать о регулярных выражениях.
Также, если это поможет, вы можете предположить, что html является строгим xhtml.