Разделение строки, на подстроки с сохранением символа разделителя

Сама по себе задача простая, разделил а потом в разделенную подстроку добавить символ разделения.

Но нет.

Необходимо разделить большую строку, именно что с сохранением символа разделителя в подстроке, нельзя создавать новую строку !

Пытался разделять и через string.split, и через Regex.Split, но результат один и тот же, символ разделителя удаляется.

Пробовал такие варианты:

var str = "hello=world=";

foreach (var subStr in str.Split('='))
    Console.WriteLine(subStr);

foreach (var subStr in Regex.Split(str, "="))
    Console.WriteLine(subStr);

foreach (var subStr in Regex.Split(str, @"(\=)"))
    Console.WriteLine(subStr);

Но ни один из них не подходит, их консольные выводы:

hello
world

hello
world

hello
=
world
=

Результат что я ожидаю:

hello=
world=

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

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

Если = в строке заведомо есть и все строки им кончаются, то просто делаете вместо сплита нон-гриди матч любой строки и в конце =:

foreach (var subStr in Regex.Matches(str, @".*?="))
    Console.WriteLine(subStr);

Вывод:

hello=
world=
→ Ссылка
Автор решения: Mark Shcerbakov

А если все-таки строка имеет произвольный вид, то можно вот так:

string separator = Regex.Escape("=");
string[] strSplit = Regex.Split(s, @$"(?<={separator})");

Если в конце строки находится разделитель, то просто убираем из результата последнюю пустую строку.

→ Ссылка