Regex для фильтрации тега span, если он имеет атрибут - PullRequest
0 голосов
/ 14 февраля 2019

У меня есть код ниже, где я хочу удалить или удалить тег span, если у него нет атрибутов, использующих java.

Это регулярное выражение удаляет все теги SPAN.<(/)? [] <em>span [^>] >

например,

<span style="font-weight: bold;text-decoration-line: underline;">test</span><p><span>&nbsp;</span></p><p><span>Table</span></p>

вывод:

  <span style="font-weight: bold;text-decoration-line: underline;">test</span><p>&nbsp;</p><p>Table</p>

Любая помощь?

Ответы [ 2 ]

0 голосов
/ 14 февраля 2019

Это невозможно.Регулярное выражение не может знать, какой закрывающий тег </span> принадлежит к <span>, который вы хотите удалить.Используйте анализатор HTML, такой как jsoup .

Редактировать:

Пример

    String html = "<span style=\"font-weight: bold;text-decoration-line: underline;\">test</span><p><span>&nbsp;</span></p><p><span>Table</span></p>";

    Document doc = Jsoup.parse(html);

    for (Element span : doc.getElementsByTag("span")) {
        if (span.attributes().size() == 0) {
            span.unwrap();
        }
    }

    doc.outputSettings().prettyPrint(false);

    String result = doc.body().html();
0 голосов
/ 14 февраля 2019

Попробуйте это в коде Java

var str = // your string here

str = str.replaceAll("<\\/span[^>]*>", "");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...