2014-11-06 2 views
0

Как получить первое предложение из первого абзаца?Как получить первое предложение из первого абзаца?

<h2>Test</h2> 
<p class="preserve"> 
     Morbi in sem quis dui placerat ornare. Pellentesque odio nisi. Euismod in pharetra a, diam. 
</p> 
<p class="preserve"> 
     Morbi in sem quis dui placerat ornare. Pellentesque odio nisi. Euismod in pharetra a, diam. 
</p> 

Мое регулярное выражение принимает все предложения из первого и второго абзацев.

<p.*>.*\.\s[A-Z] 
+2

Использование HTML Agility Pack. –

+0

Не могли бы вы лучше объяснить, каковы ваши намерения? Вы хотите получить этот первый абзац из кода C# ... или это можно сделать через JS? Благодарю. – marcoaoteixeira

+0

Можете ли вы уточнить, что вы подразумеваете под предложением или то, что вы ожидаете от извлеченного текста? Обычное английское использование предложения подразумевает группу слов, заканчивающихся полной остановкой. Из комментариев к ответам вы, кажется, ищете что-то еще. – Kami

ответ

2

Шаги:

  • Настройка режима одной строки
  • пропустить первые p тегов и пространства charactes после него - <p.*?>\s+
  • захватить все перед первой точкой .*?\..

regex demo

<p.*?>\s+(.*?)\. 
+0

Но предложение - это не просто DOT, а КАПИТАЛ ПИСЬМО после пробела. Поместите точку внутри первого предложения, чтобы она перестала работать. – podeig

+0

Это работает \ s + (. *?) (\. [A-Z]) – podeig

+0

@podeig Вы смотрели демо-версию regex? Я думаю, вы пропустите некоторые подробности. –

1
/<p[^>]*>(.|\s)*([A-Z][^<.]*)\./gU 

demo

+0

Но предложение - это не просто DOT, а КАПИТАЛЬНОЕ ПИСЬМО после пробела. Поместите точку внутри первого предложения, чтобы она перестала работать. – podeig

1

Это поставит первое предложение каждого абзаца в 1-й группе

<p.*>\s*([A-Z].+?)(?=\.\s[A-Z]) 
Смежные вопросы