Подскажите регулярку. Надо найти заглавный текст и выделить его

  • Автор темы Автор темы backoff
  • Дата начала Дата начала

backoff

Client
Регистрация
20.04.2015
Сообщения
6 355
Реакции
6 640
Баллы
113
есть текст, обычные абзацы, но перед ними есть оглавление, оно написано заглавными буквами, нужно найти такой текст и запихать его в теги

пример
C#:
Развернуть Свернуть Копировать
Текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст
текст текст текст текст текст текст текст текст текст текст
текст текст текст текст текст текст текст текст текст текст текст текст
КАКОЕ-ТО НАЗВАНИЕ, ИЛИ ТИПА ТОГО
Текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст
текст текст текст текст текст текст текст текст текст текст текст текст текст
текст текст текст текст текст текст текст
нужно найти "КАКОЕ-ТО НАЗВАНИЕ, ИЛИ ТИПА ТОГО" и сделать так "<h2>КАКОЕ-ТО НАЗВАНИЕ, ИЛИ ТИПА ТОГО</h2>"

текст всегда с новой строки, всегда капсом
 
C#:
Развернуть Свернуть Копировать
(?<=\r\n)[А-ЯЁ\W]{2,}(?=\r\n)

Пробуй такой вариант
 
  • Спасибо
Реакции: backoff и Sergodjan
Дополню немного. Можно обрамить регулярку скобками, тем самым сделав из нее групповую, и использовать замену с подстановками h2 тегов. Новый вариант регулярки: (?<=\r?\n)[А-ЯЁ\W]{2,}(?=\r?\n)

92563
 
  • Спасибо
Реакции: backoff
еще одна регулярка нужна, никак не могу победить
нужно заменять
если в закрытых тегах <p><p> находятся ДО 3х слов то мы все это заменяем на <p><h3></h3><p>
если в тегах больше 3х слов то ничего не делаем

пример
C#:
Развернуть Свернуть Копировать
текст текст текст текст <p>текст текст текст<p> текст текст текст текст текст текст текст текст
текст текст текст текст текст текст текст текст текст текст
текст текст текст текст текст текст текст текст текст текст текст
текст <p> текст текст текст текст текст текст текст </p> текст текст текст текст
должно получиться
C#:
Развернуть Свернуть Копировать
текст текст текст текст <p><h3>текст текст текст</h3><p> текст текст текст текст текст текст текст текст
текст текст текст текст текст текст текст текст текст текст
текст текст текст текст текст текст текст текст текст текст текст
текст <p> текст текст текст текст текст текст текст <p> текст текст текст текст

можно ли такое сделать регуляркой? или надо С#?
 
Последнее редактирование:
@backoff Встречный вопрос не по сути вопроса, но все же - а зачем заголовок выделять тегом абзаца? Заголовок и так подразумевает что будет отображаться с переносами спереди и сзади, уже как бы в абзаце.
 
можно ли такое сделать регуляркой? или надо С#?

Регулярку
C#:
Развернуть Свернуть Копировать
<p>((\S+(\s)|)(\S+\s|)(\S+|))</p>

Заменить на
C#:
Развернуть Свернуть Копировать
<p><h1>$1</h1></p>

Пример
92600
 
  • Спасибо
Реакции: backoff
@backoff Встречный вопрос не по сути вопроса, но все же - а зачем заголовок выделять тегом абзаца? Заголовок и так подразумевает что будет отображаться с переносами спереди и сзади, уже как бы в абзаце.

Согласен.

Правильнее заменять на
</p><h1>$1</h1><p>
Чтобы абзацы отдельно от заголовка были.
 
Встречный вопрос не по сути вопроса, но все же - а зачем заголовок выделять тегом абзаца? Заголовок и так подразумевает что будет отображаться с переносами спереди и сзади, уже как бы в абзаце.
больше для визуализации
Правильнее заменять на
</p><h1>$1</h1><p>
Чтобы абзацы отдельно от заголовка были.
да, просто изначальный код немного кривой, и нет закрывающих тегов, я с немного ошибся в посте, в исходниках нет </p> есть только <p><p>
 

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