Как найти соответствующий закрывающий тег в HTML-строке? - PullRequest
2 голосов
/ 28 апреля 2011

Представьте себе следующий HTML:

<div>
  <b></b>
  <div>
    <table>...</table>
  </div>
</div> <!-- this one -->
...

Как найти соответствующий закрывающий тег для первого открывающего тега div? Есть ли рег экс, который мог бы его найти? Я предполагаю, что это довольно распространенное требование, но я изо всех сил пытаюсь найти что-нибудь простое, просто полноценные парсеры HTML.

Ответы [ 5 ]

4 голосов
/ 28 апреля 2011

Нет.

Используйте полноценный HTML-парсер.Есть причина, по которой они существуют.

3 голосов
/ 28 апреля 2011

Использование Html Agility Pack .

1 голос
/ 28 апреля 2011

Ну, вам нужно иметь четкое представление о синтаксисе!Однако регулярные выражения очень ограничены по объему, и я бы не рекомендовал использовать их для синтаксиса с несколькими строками / тегами.

Вам скорее нужно отслеживать каждый тег (открывать / закрывать) и использовать «обработчик» для обработки вашего запроса.Вы можете использовать некоторые инструменты Lex / Yacc, но это может быть излишним.В зависимости от языка, который вы используете, для этой цели у вас уже могут быть модули (например, HTMLParser в Python).

1 голос
/ 28 апреля 2011

Я предполагаю, что вы взяли теги html ... Теперь создайте стек и каждый раз, когда вы видите нажатие открывающего тега, и каждый раз, когда вы видите закрывающий тег, всплывающий ... и проверяете, появляются ли те, которые вы открыли, закрывающий тег ...

Но для этого уже есть HTML-парсеры, поэтому ищите один в codeplex.

0 голосов
/ 28 апреля 2011

Всегда есть LinqToXml, если вы хотите разобрать HTML и вам не нужны все мелкие детали.

...