Подтвердить что ты не робот

Регулярное выражение для удаления тегов HTML из строки

Возможный дубликат:
Регулярное выражение для удаления тегов HTML

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

Учитывая это:

<td class="played">0</td>

Я ищу выражение, которое вернет 0, разделив теги <td>.

4b9b3361

Ответ 1

Следующие примеры - Java, но регулярное выражение будет аналогичным - если не идентичным - для других языков.


String target = someString.replaceAll("<[^>]*>", "");

Предполагая, что ваш не-html не содержит никаких < или > и что ваша строка ввода правильно структурирована.

Если вы знаете, что это определенный тег - например, вы знаете, что текст содержит только теги <td>, вы можете сделать что-то вроде этого:

String target = someString.replaceAll("(?i)<td[^>]*>", "");

Изменить: Ωmega поднял хорошую точку в комментарии к другому сообщению, что это приведет к нескольким результатам, все сплющиваются вместе, если бы было несколько тегов.

Например, если входная строка была <td>Something</td><td>Another Thing</td>, то приведенное выше приведет к SomethingAnother Thing.

В ситуации, когда ожидается несколько тегов, мы могли бы сделать что-то вроде:

String target = someString.replaceAll("(?i)<td[^>]*>", " ").replaceAll("\\s+", " ").trim();

Это заменяет HTML одним пространством, затем свертывает пробелы, а затем обрезает все на концах.

Ответ 2

Тривиальный подход заключался бы в замене

<[^>]*>

ни с чем. Но в зависимости от того, насколько плохо структурирован ваш ввод, который может сильно потерпеть неудачу.

Ответ 3

Вы можете сделать это с помощью jsoup http://jsoup.org/

Whitelist whitelist = Whitelist.none();
String cleanStr = Jsoup.clean(yourText, whitelist);