Входные данные - это строка, представляющая список элементов.
Список определяется как открытый фигурный {
, за которым следует 0 или более элементов, разделенных пробелом, за которым следует закрытый фигурный }
.
Элемент - это либо литерал, либо список элементов.
Литерал - это последовательность непробельных символов. Если элемент содержит фигурную скобку, он должен быть экранирован обратной косой чертой: \{
и \}
. (Или вы можете предположить, что фигурные скобки не допускаются внутри литералов для простоты)
Пример:
"{abc { def ghi } 7 { 1 {2} {3 4} } {5 6} x\{yz \}foo }"
Никаких фигур внутри литералов:
"{abc { def ghi } 7 { 1 {2} {3 4} } {5 6} xyz foo }"
(Это упрощенное определение списка Tcl.)
Я хочу знать: можно ли разделить ввод на элементы внешнего цикла с помощью регулярного выражения?
Ожидаемый результат:
abc
{ def ghi }
7
{ 1 {2} {3 4} }
{5 6}
x{yz
}foo
Настоящий вопрос: можно ли это сделать с помощью Regex?
Меня больше всего интересует вариант .NET, но я приму любые ответы.
Я отправлю свое собственное предположение в ответ и посмотрю, подтверждено ли оно или уничтожено.
}foo
литерал, а4}
нет? Фактически,}
- допустимый литерал по вашему определению. - person Kobi   schedule 29.08.2010set a 3{4
, но неset a {1 2 3{4 }
. Аналогичное поведение для закрытых завитушек. Я обновлю вопрос. - person Cristian Diaconescu   schedule 30.08.2010