Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Считать массив регэкспами


Автор: Competitor 24.8.2007, 11:39
Всем привет.
Есть к примеру строка: "value0, value1, (value2,value3,value4....)"
Как мне выдернуть отсюда все значения?
Значений в скобках может быть сколько угодно и нужно выдрать их в массив.
Начал делать так:
Код

"(.*?(?<firstvalue>.*?), (?<secondValue>.*?), ().*?)"

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

Автор: SpaceSpace 24.8.2007, 11:43
для скобки еще одно рег-выражение.
т.е сначала первым выражением парсиш строку, вторым - скобки

Автор: Competitor 24.8.2007, 11:49
Цитата

для скобки еще одно рег-выражение.
т.е сначала первым выражением парсиш строку, вторым - скобки

А как сделать всё в одном выражении?

Автор: SpaceSpace 24.8.2007, 12:08
а никак, только рекурсивно - выражение одно и тоже ведь остается
вот и ишеш рекурсией до скобок, потом в скобках 
(ведь в скобках тоже могут быть скобки)
так целые деревья получаются
массивы массивов

Автор: tol05 24.8.2007, 13:21
А простой вариант типа 
Код

string s = "value0, value1, (value2,value33,(value230,value65), value4....)";
Regex r = new Regex(@"value\d*");
MatchCollection m = r.Matches(s);

не подойдет? smile

Автор: Competitor 24.8.2007, 13:24
tol05, да нет smile
Важно после парсинга знать, что было получено из скобок, а что нет

Автор: SpaceSpace 24.8.2007, 13:26
неа
value - это для примера,
на самом деле скорее всего значения не обязаны содержать Value в начале,

хотя....
если будет какой либо символ, означающий начало значения - проблема решена
в одном случае это - начало строки(^), в другом - запятая(,), в третьем скобка( ( )
- ставьте плюс  smile 

Автор: Idsa 24.8.2007, 13:54
Цитата(SpaceSpace @  24.8.2007,  13:26 Найти цитируемый пост)
- ставьте плюс

Кому?

Автор: SpaceSpace 24.8.2007, 14:07
шучу я так  smile 

Автор: tol05 24.8.2007, 17:29
Очень интересно...
Цитата(Competitor @  24.8.2007,  13:24 Найти цитируемый пост)
Важно после парсинга знать, что было получено из скобок, а что нет

а зачем? Как я понял, тебе нужно 

Цитата(Competitor @  24.8.2007,  11:39 Найти цитируемый пост)
Как мне выдернуть отсюда все значения?Значений в скобках может быть сколько угодно и нужно выдрать их в массив.
 в один единственный массив и чтоб все value там были, в скольких бы скобках (или совсем без скобок) они бы не были...

непонятно....

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)