2009-02-23 3 views
-1

Я ищу регулярное выражение, которое соответствует всем использованным тэгам HTML в тексте, состоящем из нескольких строк. Он должен читать «b», «p» и «script» в следующих строках:Regex читать HTML-теги

<b> 
<p class="normalText"> 
<script type="text/javascript"> 

Есть ли такая вещь? Начало, которое у меня есть, это то, что он должен начинаться с «<» и читать до тех пор, пока он не достигнет пробела или «>», но в то же время он не должен включать начальный «<», так как я просто хочу совместить букву/само слово. Мысли?

+0

Серьезно, об этом спрашивали много раз, прежде чем это не смешно. – cletus

+0

Это день, заканчивающийся на y – annakata

+0

@cletus. Возможно, я был бы рад видеть, где и нет, ссылки ниже не касаются проблемы. – miccet

ответ

4

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

(?<=<)\w+(?=[^<]*?>) 

Для записи я считаю мало верю в это время вообще полезно в любом но наиболее тривиальным случаем.

+0

Это просто сделано для примера в любом случае и не обязательно должно быть пуленепробиваемым. Это отлично работает, и я вижу, как работает функция exclude. Огромное спасибо. – miccet

+0

-1 Неправильно на стольких уровнях. – cletus

+2

@cletus: На каком уровне это неправильно, что он еще не закрыл? – flussence

1

Я не знаю, какую систему вы используете, но это можно сделать в определенной степени. Посмотрите на this онлайн-приложение на основе гибких приложений. Ознакомьтесь с примерами Published> XML regex. Вы получите представление.

+0

Не могу найти пример, который поможет мне с проблемой, но это отличный ресурс! Я использую регулярное выражение ASP.net. – miccet

6

Есть много подобных вопросов на SO:

  1. Filter out HTML tags and resolve entities in python
  2. Regex to match all HTML tags except <p> and </p>
  3. Strip all HTML tags except links

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

+0

Возможно, вы захотите изменить этот текст ссылки из URL-адреса на текст вопроса, чтобы он был более читабельным. – cletus

+0

Да, я их видел. Я не очень беспокоюсь о лучшей практике здесь, хотя, так как это не будет в конечном итоге в приложении в любом случае. Самая большая проблема, которую я вижу с тем, что я хочу, - это сопоставить первый символ «<», но не включать его в соответствие, если это имеет смысл. – miccet

+0

@miccet: используйте круглые скобки для группировки интересующего вас материала. – dirkgently