Как удалить тег с помощью регулярных выражений

0

У меня есть такая строка:

<span class="cDkSuggestion"></span>
<var class="tSuggestionTag r5">representation</var>
<span class="ib p1 tSuggetionName">for<b>rep</b>resentation</span>
<var class="tSuggestionTag r5">for<b>rep</b>res...</var>
<var class="tSuggestionTag r5">cost of representation</var>

и регулярное выражение

query = query.replace(/<var.*>(.*)<\/var>/gi, "");

результатом этого регулярного выражения является

<span class="cDkSuggestion"></span>

мне нужно

<span class="cDkSuggestion"></span>
<span class="ib p1 tSuggetionName">for<b>rep</b>resentation</span>

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

  • 1
    Вы действительно не должны использовать регулярные выражения для анализа или удаления тегов HTML, возможно, вам следует попытаться повторить свой вопрос и объяснить причину, по которой вы столкнулись.
Теги:
string

2 ответа

2

Вы действительно должны использовать парсер, но если вы хотите регулярное выражение, сделайте его не жадным:

/<var.*?>(.*?)<\/var>/gi

или, безопаснее:

/<var[^>]*>([^<]*)<\/var>/gi
  • 1
    Если он действительно хочет «не включать другие теги», этого может быть недостаточно: использование [^ <] * будет безопаснее.
  • 0
    @dystroy: Ты прав.
-2

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

String test = testString.replaceAll("(? I)] *>", "");

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

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

String test = testString.replaceAll("(? I)] *>", "").replaceAll("\ s+", "").trim();

Ещё вопросы

Сообщество Overcoder
Наверх
Меню