Вы можете использовать метод Regex.Split , что-то вроде этого:
Regex regex = new Regex(@"\bis\b");
string[] substrings = regex.Split("This is a sentence");
foreach (string match in substrings)
{
Console.WriteLine("'{0}'", match);
}
Изменить: это удовлетворяет приведенному вами примеру. Обратите внимание, что обычный String.Split также будет разбит на « is » в конце слова «This», поэтому я использовал Regex и включал границы слов вокруг « - ». Обратите внимание, однако, что если вы просто написали этот пример по ошибке, то, вероятно, будет достаточно String.Split .
Это означает, что группировка атомарная , и это выбрасывает информацию об отслеживании в обратном порядке для подобранной группы. Так, это выражение является притяжательным; это не отступит, даже если выполнение так будет единственным путем к regex в целом для следования. Это "независимо" в том смысле, что это не сотрудничает, через отслеживание в обратном порядке, с другими элементами regex для обеспечения соответствия.
Если Вы имеете foo(?>(co)*)co
, который никогда не будет соответствовать. Я уверен, что существуют практические примеры того, когда это было бы полезно, попробуйте книгу O'Reilly.