Регулярное выражение для содержимого внутри тегов - PullRequest
0 голосов
/ 25 марта 2011

Я использую Javascript У меня есть это:

<(div|span) class="search-result-(body-text|title)">(.*?)</(span|div)>

И я использую это содержание:

<div class="search-result-item club">
   <span class="search-result-type">Projekt</span
   <span class="search-result-title">Titel</span>
   <div class="search-result-body-text">
     Body text
   </div>
   <div class="search-result-attributes">
     <span class="search-result-attribute">Attribute</span>
   </div>
 </div>

Мой результат:

<span class="search-result-title">Titel</span>,
<div class="search-result-body-text">
  Body text
</div>

Это имеет смысл, но как должно выглядеть мое регулярное выражение, чтобы оно убирало теги, поэтому я получаю только: Титул , Основной текст

1 Ответ

4 голосов
/ 25 марта 2011

По закону кто-то должен опубликовать ссылку на это: RegEx соответствует открытым тегам, за исключением автономных тегов XHTML , которые вы должны прочитать и пересмотреть, хотите ли вы действительно быть парсинг HTML с использованием регулярных выражений.

Однако вам нужно содержимое третьей () группы в вашем совпадении. Метод exec объекта регулярного выражения JS - это массив, содержащий все совпадения с индексом 0 и совпадения из всех групп с индексами 1,2, ... (в данном случае вам нужен индекс 3).

[ПРИМЕЧАНИЕ: более ранняя версия этого ответа имела «first» и «1» вместо «третьего» и «3» выше, потому что я неправильно прочитал ваше регулярное выражение. К сожалению.]

...