ColdFusion Regex для поиска пустых тегов html

Привет всем, я пытаюсь динамически удалить некоторые пустые теги html. Я новичок в Regex, и кажется, что движок для coldfusion не так надежен/похож на другие движки regex (например, javascript и as3).

В чем хитрость создания регулярного выражения, которое игнорирует пробелы в coldfusion 8? Итак, если я создам эту вещь, я хочу, чтобы она работала на любом из приведенных ниже примеров.

<p > </p>
<p>         </p>
<P></p>

Любая помощь будет очень полезной!


person biscuitcleaver    schedule 13.11.2010    source источник
comment
ColdFusion использует механизм регулярных выражений Apache ORO, который менее популярен, чем некоторые (например, Java, .NET и т. д.), но он по-прежнему поддерживает большинство функций регулярных выражений (включая некоторые, которых нет в JavaScript). Вы также можете очень легко погрузиться в Java, что дает вам все возможности классов java.util.regex.   -  person Peter Boughton    schedule 16.11.2010


Ответы (1)


Это должно работать: <\w+[^>]*(/>|>\s*?</\w+>). Я думаю. Нет сложных, специфичных для языка функций (т.

Изменено отсюда: Регулярное выражение для удаления пустого ‹span › теги

person Chris Laplante    schedule 13.11.2010
comment
Это соответствует таким вещам, как <p/>, которые ОП не запрашивал. И я не понимаю, почему используются ленивые квантификаторы. Более простой вариант будет: <\w+[^>]*>\s*</\w+> (или <\w+[^>]*>\s+</\w+>, если <p></p> не желательно совпадать) Немного лучшей версией все же может быть: <\w+.*?>\s+</\w+>, чтобы избежать неудачи на <p title="1>2"> </p>, но если вы пойдете по этому пути, вы начнете беспокоиться о таких вещах, как <p title="<p> </p>"> </p> и в игру вступает целое использование реального парсера HTML. - person Peter Boughton; 16.11.2010
comment
Я тоже собирался предложить использовать парсер HTML. Это предотвратило бы прохождение таких вещей, как <p/>. Кроме того, я не знаю, почему я использовал ленивые квантификаторы - спасибо, что поймал это. - person Chris Laplante; 17.11.2010
comment
Я считаю, что ColdFusion обрабатывает обратные ссылки, так что это тоже может сработать: <(\w+)[^>]*>\s*</\1> - person Jordan Reiter; 17.11.2010