Определите HTML-теги, присутствующие с помощью Regex - PullRequest
1 голос
/ 02 мая 2011

Я делаю это на Android и не хочу использовать html-парсеры (библиотеки), поскольку единственная цель - узнать, какие HTML-теги присутствуют, кроме и

Я использую:

Pattern p = Pattern.compile ( "<^ бип />");

Это хорошо работает, возвращая все теги, кроме B, I, P, НО также удаляет тег image. Может ли кто-нибудь изменить его, чтобы он не игнорировал тег img?

Ответы [ 3 ]

1 голос
/ 02 мая 2011

Я думаю, что ваше определение регулярного выражения должно быть таким:

Pattern p = Pattern.compile("(?i)<(?![bip]\\b).*?/?>");
  • ?! для отрицательного взгляда вперед // т.е. < не сопровождается (b или i или p) + граница слова
  • (?i) для игнорирования сравнения регистра
  • .*? для произвольного захвата 0 или более символов после открытия тегов
  • /? для включения дополнительной косой черты перед >
1 голос
/ 02 мая 2011

Если вы хотите узнать, какие теги есть в вашем документе, я бы посоветовал использовать более одного шага:

  • извлечь все теги и поместить их в список;regexp довольно прост <(. *?)>
  • отсортировать список по уникальности, отфильтровать его, чтобы удалить ненужные символы (например, i, b, p ...)

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

0 голосов
/ 02 мая 2011

Хотите распознать или удалить метки?

И хотите ли вы различать теги типа <img onerror='alert("PWNED")' src=bogus> и те, которые соответствуют определению легитимности?

См. http://code.google.com/p/owasp-java-html-sanitizer/source/browse/trunk/src/main/org/owasp/html/HtmlPolicyBuilder.java о способах создания облегченных политик очистки HTML в java.

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