Разбить текст по пунктам

Есть на входе строка типа такой:

1. qqqq
qqqq
qq
qqqqq

2. www
wwww
www
ww

3. eeee
eeee
eeee

Мне нужно по итогу получить массив строк

"qqqq
qqqq
qq
qqqqq"

"www
wwww
www
ww"

"eeee
eeee
eeee"

Как это сделать лучше всего? Пытался изобрести подобную регулярку, но не особо успешно, не знаю как цеплять последний пункт [0-9]+\.(?<text>[\s\S]+?)(?=^[0-9]+\.)


Ответы (1 шт):

Автор решения: ipatev_nn

На сколько я помню библиотека C# позволяет использовать неявное количество символов в просмотрах назад, поэтому что бы не захватывать все отдельно в группу можно попробовать сделать так:

(?<=^[0-9]+\.)[\s\S]+?(?=^[0-9]+\.|\Z)

После цифра одной или более с точкой, захватываем все пробельный и не пробельные символы с ленивым квантификатором (1 и более) до первого совпадения с числом после которого идет точка в начале строки или до конца текста. Данные будут выглядеть сразу как и требовалось без необходимости получения их из группы.
Но отвечая на вопрос продублирую комментарий:
Попробуйте в группе позитивного просмотра вперед добавить логическое ИЛИ, указав завершение текста \Z

→ Ссылка