Как правило, я бы описал такую проблему следующим образом:
Сначала определите, действительно ли вам нужно разбить строку или вам нужно извлечь от него.Разделение кажется подходящим, когда вы хотите получить несколько похожих вещей, т.е.вещи с содержимым того же рода (например, списки).Извлечение кажется более подходящим, когда отдельные сегменты содержат разные вещи.В вашем случае последнее представляется более вероятным.
Если бы вы разбили строк, вы могли бы использовать два метода:
string.Split
если каждый сегмент разделен одинаковыми символами.
Regex.Split
, если разделители сегментов не всегда одинаковы.
Для извлечения вы почти всегда будете получать регулярные выражения, т.е.System.Text.RegularExpressions.Regex
класс .Вам нужно найти один или несколько шаблонов, которые точно соответствуют вашим требованиям.
Чтобы фактически извлечь текст с помощью регулярного выражения, вы можете использовать группы захвата и захвата.Используйте нормальные ( )
круглые скобки для захвата текста, соответствующего определенному шаблону;используйте не захватывающие скобки (?: )
для всего остального.Например,
A (B) (?:C) D
B
будет захвачено в группе и доступно, например, через regex.Groups[1].Value
, в то время как C
не будет захвачено.