Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

вопрос парсинга

58K
31 марта 2010 года
user6075
1 / / 31.03.2010
Здравствуйте
Есть задачка распарсить файл настроек типа такого:
Код:
[блок1]
какойтотекст
какойтотекст
какойтотекст
[блок2]
какойтотекст
какойтотекст
какойтотекст
[блок3]
какойтотекст
какойтотекст
какойтотекст


надо выдирать то что в []-скобочках и то что после них
я написал примерно такой код

 
Код:
Match match2 = Regex.Match(text, "\\[(.*?)\\](.*?)", RegexOptions.Singleline);
            while (match2.Success)
            {
                вытаскиваем данные
                match2 = match2.NextMatch();
           
            }

проблема в том что
 
Код:
(.*?)
в конце регулярного выражения вытаскивает пустую строку, а если написать
 
Код:
(.*)
будет выбирать все до конца файла.

Существует ли какой-нибудь способ заставить выбирать данные до начала следующего блока и как в таких случаях поступают задача по-моему распространенная?

спасибо
5
31 марта 2010 года
hardcase
4.5K / / 09.08.2005
Попробуйте решать задачу несколько иначе:
1) файл читать по-строчно
2) если строка подходить под выражение @"\s*\[.*?\]\s*", то следующие строки передавать обработчику этого блока
8.2K
31 марта 2010 года
bagie2
299 / / 26.10.2008
я сделал так

 
Код:
foreach (Match m in Regex.Matches(richTextBox1.Text + "[", "\\[.+?\\](.|\n)*?(?=\\[)"))
            {
                MessageBox.Show(m.Value);
            }
842
19 апреля 2010 года
sigmov
301 / / 16.09.2008
Используйте опцию RegexOptions.Multiline
Тогда каждую строчку из файла он будет считать за отдельную строку
Аноним
согласен с хардкейсом - если структура файла не цельная то в общем случае
построчное прочтение будет лучше.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог