HTML Regexp Selector - PullRequest
       15

HTML Regexp Selector

2 голосов
/ 26 апреля 2011

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

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

..., который отлично работает для таких тегов, как этот ...

<p>Paragraph</p>
<span>Span</span>
<p><a href="link.php">Link</a></p>

... но он не может выбирать теги, такие какthis:

<img src="picture.jpg" />

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

Спасибо заваше время,
spryno724

Ответы [ 2 ]

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

РЕДАКТИРОВАТЬ: Я только что закончил, используя возможности Flash XML для чтения HTML.Нет необходимости в селекторах RegExp!

Вот мой ActionScript

var evaluatedInput:RegExp = new RegExp('<([A-Z][A-Z0-9]*)\\b[^>]*>(.*?)</\\1>', 'gi');
var result:Object = evaluatedInput.exec("<p>Hi!</p><span>Hi!</span><table><tbody><tr><td>Hi!</td></tr></tbody></table><img src=\"nice.jpg\" />");

while (result != null) {             
  trace (result);
  result = evaluatedInput.exec("<p>Hi!</p><span>Hi!</span><table><tbody><tr><td>Hi!</td></tr></tbody></table><img src=\"nice.jpg\" />");
}

Содержание в моем окне вывода - это именно то, что я хотел, только теги верхнего уровня выбраны:

<p>Hi!</p>,p,Hi!
<span>Hi!</span>,span,Hi!
<table><tbody><tr><td>Hi!</td></tr></tbody></table>,table,<tbody><tr><td>Hi!</td></tr></tbody>

Используя предложенное регулярное выражение выше, я получаю:

<p>,p
</p>,p
<span>,span
</span>,span
<table>,table
<tbody>,tbody
<tr>,tr
<td>,td
</td>,td
</tr>,tr
</tbody>,tbody
</table>,table
<img src="nice.jpg" />,img

Поэтому, чтобы улучшить новое регулярное выражение, я бы хотел:

  • Выбрать только верхний уровеньHTML-теги, а не вложенные
  • Возвращает тег и атрибуты тега только что выбранного элемента
  • Возвращает содержимое, HTML и все теги, которые он выбрал

Извините за сбой список деталей.(

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

Хм.Итак, вы ищете что-то вроде:

/</?([a-z][a-z0-9]*)[^<>]*>/
...