Снегопат

Обсуждение Снегопата
Текущее время: 23 ноя 2024, 12:54

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 3 ] 
Автор Сообщение
СообщениеДобавлено: 13 апр 2014, 01:10 
Не в сети

Зарегистрирован: 19 сен 2011, 11:14
Сообщения: 103
Стоит следующая задача:
Через регулярное выражение получить данные в структурированном виде, т.е. данные такого вида
 Данные
Код:
            runProperties62.Append(fontSize70);
            runProperties62.Append(fontSizeComplexScript70);
            Text text62 = new Text(){ Space = SpaceProcessingModeValues.Preserve };
            text62.Text = "Приемка ";

            run62.Append(runProperties62);
            run62.Append(text62);

            Run run63 = new Run(){ RsidRunProperties = "00A95F02", RsidRunAddition = "00D53943" };

            RunProperties runProperties63 = new RunProperties();
            FontSize fontSize71 = new FontSize(){ Val = "18" };
            FontSizeComplexScript fontSizeComplexScript71 = new FontSizeComplexScript(){ Val = "18" };

            runProperties63.Append(fontSize71);
            runProperties63.Append(fontSizeComplexScript71);
            Text text63 = new Text();
            text63.Text = "и оценка оказанных услуг";

            run63.Append(runProperties63);
            run63.Append(text63);

            Run run64 = new Run(){ RsidRunProperties = "00A95F02" };

            RunProperties runProperties64 = new RunProperties();
            FontSize fontSize72 = new FontSize(){ Val = "18" };
            FontSizeComplexScript fontSizeComplexScript72 = new FontSizeComplexScript(){ Val = "18" };

            runProperties64.Append(fontSize72);
            runProperties64.Append(fontSizeComplexScript72);
            Text text64 = new Text(){ Space = SpaceProcessingModeValues.Preserve };
            text64.Text = " про";

            run64.Append(runProperties64);
            run64.Append(text64);

            Run run65 = new Run(){ RsidRunProperties = "00A95F02", RsidRunAddition = "00D53943" };

            RunProperties runProperties65 = new RunProperties();
            FontSize fontSize73 = new FontSize(){ Val = "18" };
            FontSizeComplexScript fontSizeComplexScript73 = new FontSizeComplexScript(){ Val = "18" };

            runProperties65.Append(fontSize73);
            runProperties65.Append(fontSizeComplexScript73);
            Text text65 = new Text();
            text65.Text = "изводится по акту сдачи-приемки";

            run65.Append(runProperties65);
            run65.Append(text65);

            Run run66 = new Run(){ RsidRunProperties = "00A95F02" };

            RunProperties runProperties66 = new RunProperties();
            FontSize fontSize74 = new FontSize(){ Val = "18" };
            FontSizeComplexScript fontSizeComplexScript74 = new FontSizeComplexScript(){ Val = "18" };

            runProperties66.Append(fontSize74);
            runProperties66.Append(fontSizeComplexScript74);
            Text text66 = new Text();
            text66.Text = ".";

            run66.Append(runProperties66);
            run66.Append(text66);

            paragraph8.Append(paragraphProperties8);
            paragraph8.Append(run62);
            paragraph8.Append(run63);
            paragraph8.Append(run64);
            paragraph8.Append(run65);
            paragraph8.Append(run66);

            Paragraph paragraph9 = new Paragraph(){ RsidParagraphMarkRevision = "00A95F02", RsidParagraphAddition = "008E08D4", RsidParagraphProperties = "008E08D4", RsidRunAdditionDefault = "00224D41" };

            ParagraphProperties paragraphProperties9 = new ParagraphProperties();

            NumberingProperties numberingProperties4 = new NumberingProperties();
            NumberingLevelReference numberingLevelReference4 = new NumberingLevelReference(){ Val = 1 };
            NumberingId numberingId4 = new NumberingId(){ Val = 9 };

            numberingProperties4.Append(numberingLevelReference4);
            numberingProperties4.Append(numberingId4);
            Justification justification5 = new Justification(){ Val = JustificationValues.Both };

            ParagraphMarkRunProperties paragraphMarkRunProperties9 = new ParagraphMarkRunProperties();
            FontSize fontSize75 = new FontSize(){ Val = "18" };
            FontSizeComplexScript fontSizeComplexScript75 = new FontSizeComplexScript(){ Val = "18" };

            paragraphMarkRunProperties9.Append(fontSize75);
            paragraphMarkRunProperties9.Append(fontSizeComplexScript75);

            paragraphProperties9.Append(numberingProperties4);
            paragraphProperties9.Append(justification5);
            paragraphProperties9.Append(paragraphMarkRunProperties9);

            Run run67 = new Run(){ RsidRunProperties = "00A95F02" };

            RunProperties runProperties67 = new RunProperties();
            FontSize fontSize76 = new FontSize(){ Val = "18" };
            FontSizeComplexScript fontSizeComplexScript76 = new FontSizeComplexScript(){ Val = "18" };

            runProperties67.Append(fontSize76);
            runProperties67.Append(fontSizeComplexScript76);
            Text text67 = new Text();
            text67.Text = "Исполнитель";

            run67.Append(runProperties67);
            run67.Append(text67);

            Run run68 = new Run(){ RsidRunProperties = "00A95F02", RsidRunAddition = "008E08D4" };

            RunProperties runProperties68 = new RunProperties();
            FontSize fontSize77 = new FontSize(){ Val = "18" };
            FontSizeComplexScript fontSizeComplexScript77 = new FontSizeComplexScript(){ Val = "18" };

            runProperties68.Append(fontSize77);
            runProperties68.Append(fontSizeComplexScript77);
            Text text68 = new Text(){ Space = SpaceProcessingModeValues.Preserve };
            text68.Text = " обязуется ";

            run68.Append(runProperties68);
            run68.Append(text68);

            Run run69 = new Run(){ RsidRunProperties = "00A95F02", RsidRunAddition = "00884844" };

            RunProperties runProperties69 = new RunProperties();
            FontSize fontSize78 = new FontSize(){ Val = "18" };
            FontSizeComplexScript fontSizeComplexScript78 = new FontSizeComplexScript(){ Val = "18" };

            runProperties69.Append(fontSize78);
            runProperties69.Append(fontSizeComplexScript78);
            Text text69 = new Text();
            text69.Text = "оказать услуги";


Необходимо получить все вхождения по такому шаблону "text[любая цифра].Text = "<произвольный текст>";"
в группировке
Группа 1: text[любая цифра]
Группа 2: "<произвольный текст>"
также по группе 2 надо получить начальный индекс и конечный индекс текста

Пока у меня получилось временное решение ({[^}\n]+})|(?:([^=\n]+)=([^\n]+))
Кто подскажет более точный вариант


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 13 апр 2014, 02:25 
Не в сети
Аватара пользователя

Зарегистрирован: 24 авг 2011, 15:53
Сообщения: 448
Откуда: Саратов
Может я конечно задачу не правильно понял (сужу по тому, какую ты сам регулярку написал), но все же, вот рабочий вариант задачи так, как я понял ее (найти вхождения вида "text[любая цифра].Text = "<произвольный текст>";")

Код:
(text\d+).Text\s*=\s*(".+?")\s*;


Вот здесь можно поиграться на твоем же примере: http://regex101.com/r/dJ4eH0

Там наглядно видно, как работает.

_________________
С уважением,
Александр Кунташов
Канал про 1С в Телеграме: @kuntashov_devnotes


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 13 апр 2014, 02:49 
Не в сети

Зарегистрирован: 19 сен 2011, 11:14
Сообщения: 103
Спасибо то что доктор прописал.

Цитата:
также по группе 2 надо получить начальный индекс и конечный индекс текста

это решил опустить и делать замену тегов через replace


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 3 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 15


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB