Python сопоставляет абзац с несколькими разрывами строк, используя регулярное выражение

Я пытаюсь сопоставить абзацы, используя Python и Re.

Пример текста:

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut Labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum.

два или более разрыва строки здесь

Stet clita kasd gubergren, no sea takimata Santus est Lorem ipsum dolor sit amet.

два или более разрыва строки здесь

Ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut Labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata Santus est Lorem ipsum dolor sit amet.

Это выражение, кажется, почти выполняет эту работу:

paragraphs = re.findall(r'(?s)((?:[^\n][\n]?)+)', textContent)

Но я хочу убедиться, что совпадение выполняется только в том случае, если есть два или более разрыва строки. В настоящее время это совпадает слишком часто.

Редактировать:

ART. WEFWEFEW
  1 SDVSDRG: **<at the momemnt it breaks here, but it shouldnt>**
     a. wevvdfvdfd
     b. sdfsdfsdfsdfsdfsdghtrhrth

Редактировать2:

ART. WEFWEFEW
   1 SDVSDRG: 
      **here are two line-breaks, but dont split this paragraph**
      **at the momemnt it breaks here, but it shouldnt**
     a. wevvdfvdfd
     b. sdfsdfsdfsdfsdfsdghtrhrth

person simplesystems    schedule 07.09.2019    source источник
comment
Используете ли вы онлайн-тестер регулярных выражений для проверки шаблонов?   -  person wwii    schedule 07.09.2019
comment
да, используя: pythex.org   -  person simplesystems    schedule 07.09.2019
comment
какая разница?   -  person simplesystems    schedule 07.09.2019
comment
Currently it matches too often. – Какие части текста примера вы ожидаете от .findall()?   -  person wwii    schedule 07.09.2019
comment
3 совпадения с 3 абзацами в примере выше. но на данный момент он также создает совпадения, если разрывов меньше двух, возможно, я могу обновить пример   -  person simplesystems    schedule 07.09.2019
comment
Может быть, вы просто хотите re.split(r'\n{2,}',text) или re.split(r'\n{3,}',text), или re.findall(r'.+(?:\n(?!\n).*)*',text)   -  person Wiktor Stribiżew    schedule 07.09.2019
comment
@WiktorStribiżew разделился \n{2,} вроде неплохо. как я могу сказать split \n{2,}, если за ними не следует символ ':'?   -  person simplesystems    schedule 07.09.2019
comment
Это re.split(r'\n{2,}(?![\n:])',text). Работает ли это так, как ожидалось? Если получится, отпишусь с пояснениями.   -  person Wiktor Stribiżew    schedule 07.09.2019
comment
извините, я ошибся, должно быть наоборот... : за которым следуют два или более \n не должны разделяться   -  person simplesystems    schedule 07.09.2019
comment
Попробуйте r'(?<!:)\n{2,}' с re.split, но это не сработает. Я думаю, что если есть более двух разрывов строк, шаблон найдет совпадения между новыми строками. Вам следует подумать о том, чтобы переписать его для re.findall. Что-то вроде re.findall(r'(?m)^.+(?:\n(?!\n).*|(?<=:)\n{2,}.*)*', text) (демонстрация).   -  person Wiktor Stribiżew    schedule 08.09.2019