Вот небольшой текст, который выглядит как restructuredText.
This is a sentence to catch.
Title that should not be caught
-------------------------------
Another sentence to catch.
Я хочу регулярное выражение, которое ловит две строки, которые не являются заголовками, и оставляет предложение, которое является заголовком.
- Тест № 1: Как выйти из строки
---
. Я сделал /^(?!(---))[^\n]+/gm
. Это оставляет строку под заголовком. Это дает мне:
This is a sentence to catch.
Title that should not be caught
Another sentence to catch.
Тест № 2: Как оставить также предложение над заголовком строки (
Title that should not be caught
)? Я попытался
/^(?!(---))[^\n]+(?!\n---)/gm
, и это дало мне:
This is a sentence to catch.
Title that should not be caught
Another sentence to catch.
Проблема в том, что он не поймал письмо до \n---
, тогда как то, что я хочу, не ловит все предложение до . То, что я хочу:
This is a sentence to catch.
Another sentence to catch.
Как мне поступить?
РЕДАКТИРОВАТЬ:
Спасибо за ваш ответ, который работает хорошо (я Я не уверен, что понимаю все, но я буду медитировать на этом ...).
Если вы согласны, давайте расширим проблему с дополнительной сложностью. Пример новой игрушки:
This is another title not to catch, Ha !
========================================
This is a sentence to catch.
Title that should not be caught
-------------------------------
Another sentence to catch.
Как видите, я добавил еще один тип заголовка с линией ===
. С помощью регулярного выражения Тана я получаю:
=======
This is a sentence to catch.
Another sentence to catch.
- Тест 1bis: Я тестировал
.+(?![\w\s\n-=]+).+
, но ничего не поймано: (
Только для информации, я Я реализую что-то с Parsimonious на python.