Нужна помощь в регулярном выражении

nesorer

Client
Регистрация
05.09.2013
Сообщения
10
Благодарностей
4
Баллы
3
Добрый вечер. Столкнулся с проблемой при парсинге, не могу составить правильно регулярное выражение. Нужно спарсить то, что находиться в теге (если быть точным, комментарии) <p itemprop="description">...</p>

Так как присутствуют перенос строки и табуляци (или пробелы), то как можно указать начальную границу чтобы оно включало </header><p itemprop="description"> и конечную
</p><div class="review-votes"><span class="af-ru">?
Или свой вариант

Код:
        <div class="review-item" itemprop="review" itemscope="" itemtype="http://schema.org/Review">
          <header style="margin-bottom: 10px">
            <span class="average rating4"></span>
            <span class="badge">4.0</span>
            <meta itemprop="name" content="Отзыв о товаре">
            <span itemprop="author" style="margin-left: 10px; font-weight: bold; color: #797979">Анон</span>
            <span>(Казань)</span>
            <meta content="2018-06-25">
            <span style="text-align: right; float: right">25 июн 2018</span>
  
            <div style="display: none" itemprop="reviewRating" itemscope="" itemtype="http://schema.org/Rating">
              <meta itemprop="worstRating" content="1">
              <meta itemprop="ratingValue" content="4">
              <meta itemprop="bestRating" content="5">
            </div>    
          </header>
            <p itemprop="description">Минус в том что чувствительность не такая хорошая, пока оценил на 4</p>
            <div class="review-votes"><span class="af-ru">Отзыв был полезен?</span><nobr>
                <button type="button" class="review-like" data-votereview="131" data-votetype="1" data-votecount="">
                    <i class="fa fa-thumbs-up"></i> <span>Да</span>
                </button>
                <button type="button" class="review-like" data-votereview="131" data-votetype="2" data-votecount="">
                    <i class="fa fa-thumbs-down"></i> <span>Нет</span>
                </button>
                </nobr>
            </div>    
        </div>
    <div id="all-reviews-loaded"></div>  
        <div class="review-item" itemprop="review" itemscope="" itemtype="http://schema.org/Review">
          <header style="margin-bottom: 10px">
            <span class="average rating5"></span>
            <span class="badge">5.0</span>
            <meta itemprop="name" content="Отзыв о товаре">
            <span itemprop="author" style="margin-left: 10px; font-weight: bold; color: #797979">Наполеон</span>
            <span>(Тюмень)</span>
            <meta content="2019-02-12">
            <span style="text-align: right; float: right">12 фев 2019</span>
  
            <div style="display: none" itemprop="reviewRating" itemscope="" itemtype="http://schema.org/Rating">
              <meta itemprop="worstRating" content="1">
              <meta itemprop="ratingValue" content="5">
              <meta itemprop="bestRating" content="5">
            </div>    
          </header>
            <p itemprop="description">Редко пользуюсь, но помогала всегда</p>
            <div class="review-votes"><span class="af-ru">Отзыв был полезен?</span><nobr>
                <button type="button" class="review-like" data-votereview="133" data-votetype="1" data-votecount="">
                    <i class="fa fa-thumbs-up"></i> <span>Да</span>
                </button>
                <button type="button" class="review-like" data-votereview="133" data-votetype="2" data-votecount="">
                    <i class="fa fa-thumbs-down"></i> <span>Нет</span>
                </button>
                </nobr>
            </div>    
        </div>
 

orka13

Client
Регистрация
07.05.2015
Сообщения
2 177
Благодарностей
2 184
Баллы
113
ТЗ непонятное. там два таких тега. Надо то что в каждом теге? Или от начала первого и до конца второго? Если первый вариант, то регулярка:
Код:
(?<=<p\ itemprop="description">)[\w\W]*?(?=</p>)
Хотя по правильному надо бы не регулярками обрабатывать а работой с HTML-элементами через зеновские C#-методы или библиотеку "Html Agility Pack", но это уже посложнее для новичка. Зато там удобнее чистый текст получать, а то потом намучаетесь в будущем с очисткой от лишних мини-тегов (типа курсива, жирного) и спецсимволов в верстке.
 
  • Спасибо
Реакции: nesorer

nesorer

Client
Регистрация
05.09.2013
Сообщения
10
Благодарностей
4
Баллы
3
ТЗ непонятное. там два таких тега. Надо то что в каждом теге? Или от начала первого и до конца второго? Если первый вариант, то регулярка:
Код:
(?<=<p\ itemprop="description">)[\w\W]*?(?=</p>)
Хотя по правильному надо бы не регулярками обрабатывать а работой с HTML-элементами через зеновские C#-методы или библиотеку "Html Agility Pack", но это уже посложнее для новичка. Зато там удобнее чистый текст получать, а то потом намучаетесь в будущем с очисткой от лишних мини-тегов (типа курсива, жирного) и спецсимволов в верстке.
Да, первый вариант) Спасибо большое) Да, я новичок, в будущем возможно осилю)
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)