Возможный дубликат:
Регулярное выражение для удаления тегов HTML
Есть ли выражение, которое получит значение между двумя тегами HTML?
Учитывая это:
<td class="played">0</td>
Я ищу выражение, которое вернет 0
, разделив теги <td>
.
Возможный дубликат:
Регулярное выражение для удаления тегов HTML
Есть ли выражение, которое получит значение между двумя тегами HTML?
Учитывая это:
<td class="played">0</td>
Я ищу выражение, которое вернет 0
, разделив теги <td>
.
Следующие примеры - 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 одним пространством, затем свертывает пробелы, а затем обрезает все на концах.
Тривиальный подход заключался бы в замене
<[^>]*>
ни с чем. Но в зависимости от того, насколько плохо структурирован ваш ввод, который может сильно потерпеть неудачу.
Вы можете сделать это с помощью jsoup http://jsoup.org/
Whitelist whitelist = Whitelist.none();
String cleanStr = Jsoup.clean(yourText, whitelist);