Вам нужен шаблон только с lookahead:
\s+(?=delim1|delim2)
\s+
будет соответствовать одному или нескольким пробелам (так как ваша строка содержит пробелы). Если не может быть пробелов, используйте \s*
(но тогда вам нужно будет удалить пустые записи из результата). См. Демонстрацию regex . Если эти разделители должны быть целыми словами, используйте границы слова \b
: \s+(?=\b(?:delim1|delim2)\b)
.
В C #:
addrArr = Regex.Split(inputText, string.Format(@"\s+(?={0})", string.Join("|", delimeters)));
Если разделители могут содержать специальные метасимволы регулярных выражений, вы будете необходимо запустить Regex.Escape
в списке delimiters
.
A C # demo :
var inputText = "substring1 delim1 substring2 delim2 substr3";
var delimeters = new List { "delim1", "delim2" };
var addrArr = Regex.Split(inputText,
string.Format(@"\s+(?={0})", string.Join("|", delimeters.Select(Regex.Escape))));
Console.WriteLine(string.Join("\n", addrArr));