Регулярное выражение для соответствия закрывающим тегам HTML - PullRequest
3 голосов
/ 19 августа 2010

Я работаю над небольшим скриптом Python для очистки HTML-документов. Он работает, принимая список тегов в KEEP, а затем анализируя теги удаления кода HTML, которых нет в списке. Я использовал для этого регулярные выражения и смог сопоставить открывающие и самозакрывающиеся теги но не закрывающие теги.

Шаблон, с которым я экспериментировал, чтобы соответствовать закрывающим тегам, </(?!a)>. Это кажется мне логичным, так почему не работает? (?!a) должно совпадать с любым, что НЕ является тегом привязки (не то, что «a» может быть чем угодно - это просто пример).

Редактировать: AGG! Я думаю, что регулярное выражение не показывалось!

Ответы [ 4 ]

5 голосов
/ 19 августа 2010
<TAG\b[^>]*>(.*?)</TAG> 

Соответствует открывающей и закрывающей паре определенного тега HTML.

<([A-Z][A-Z0-9]*)\b[^>]*>(.*?)</\1>

Соответствует открывающей и закрывающей паре любого тега HTML.

См. здесь .

3 голосов
/ 19 августа 2010

Не используйте регулярные выражения для разбора HTML .Это только причинит вам головную боль.

Вместо этого используйте анализатор XML.Попробуйте BeautifulSoup или lxml .

0 голосов
/ 12 июля 2018

Вы также можете рассмотреть возможность использования html-парсера, встроенного в python (Документация для Python 2 и Python 3 )

Это поможет вам сосредоточиться на конкретной области документа HTML, над которой вы хотели бы работать, - и использовать в нем регулярные выражения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...