Разбор строки с тегами

31.05.09

Разработка - Математика и алгоритмы

Пример разбора строки вида "<ТЕГ атрибут1 = "значение1"  атрибут2="значение2">" с помощью алгоритма конечных автоматов.

Скачать файлы

Наименование Файл Версия Размер
РазборСтроки.epf
.1243783122 8,01Kb
192
.1243783122 8,01Kb 192 Скачать бесплатно

Иногда необходимо разбирать текстовые файлы со сложной структурой, в строках которых разделителями являются несколько символов, например пробел и двойные кавычки и т.п. В таких случаях используются конечные автоматы. Выкладываю обработку которая разбирает строку типа "<ТЕГ атрибут1 = "значение1"  атрибут2="значение2">". Код обработки написан по материалам статьи с сайта rsdn.ru.

См. также

Метод Дугласа-Пойкера для эффективного хранения метрик

Математика и алгоритмы Платформа 1C v8.2 Конфигурации 1cv8 Россия Абонемент ($m)

На написание данной работы меня вдохновила работа @glassman «Переход на ClickHouse для анализа метрик». Автор анализирует большой объем данных, много миллионов строк, и убедительно доказывает, что ClickHouse справляется лучше PostgreSQL. Я же покажу как можно сократить объем данных в 49.9 раз при этом: 1. Сохранить значения локальных экстремумов 2. Отклонения от реальных значений имеют наперед заданную допустимую погрешность.

1 стартмани

30.01.2024    1753    stopa85    12    

33

Алгоритм симплекс-метода для решения задачи раскроя

Математика и алгоритмы Бесплатно (free)

Разработка алгоритма, построенного на модели симплекс-метода, для нахождения оптимального раскроя.

19.10.2023    4415    user1959478    50    

34

Регулярные выражения на 1С

Математика и алгоритмы Инструментарий разработчика Платформа 1С v8.3 Мобильная платформа Россия Абонемент ($m)

Что ж... лучше поздно, чем никогда. Подсистема 1С для работы с регулярными выражениями: разбор выражения, проверка на соответствие шаблону, поиск вхождений в тексте.

1 стартмани

09.06.2023    7450    4    SpaceOfMyHead    17    

56

Модель распределения суммы по базе

Математика и алгоритмы Платформа 1С v8.3 Россия Абонемент ($m)

Обычно под распределением понимают определение сумм пропорционально коэффициентам. Предлагаю включить сюда также распределение по порядку (FIFO, LIFO) и повысить уровень размерности до 2-х. 1-ое означает, что распределение может быть не только пропорциональным, но и по порядку, а 2-ое - это вариант реализации матричного распределения: по строкам и столбцам. Возможно вас заинтересует также необычное решение этой задачи через создание DSL на базе реализации текучего интерфейса

1 стартмани

21.03.2022    7848    7    kalyaka    11    

44

Изменения формата файлов конфигурации (CF) в 8.3.16

Математика и алгоритмы Платформа 1С v8.3 Бесплатно (free)

Дополнение по формату файлов конфигурации (*.cf) в версии 8.3.16.

16.12.2021    4443    fishca    13    

36

Интересная задача на Yandex cup 2021

Математика и алгоритмы Бесплатно (free)

Мое решение задачи на Yandex cup 2021 (frontend). Лабиринт. JavaScript.

12.10.2021    8830    John_d    73    

46

Механизм анализа данных. Кластеризация.

Математика и алгоритмы Анализ учета Платформа 1С v8.3 Анализ и прогнозирование Бесплатно (free)

Подробный разбор, с примером использования, встроенного механизма кластеризации 1С.

31.08.2021    7796    dusha0020    8    

70
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. v7plus 13 02.06.09 00:52 Сейчас в теме
Как направление. Преобразование файла xml из вида с атрибутами к иерархической структуре тоже xml.
2. o.nikolaev 211 02.06.09 06:45 Сейчас в теме
(1) Спасибо за комменатрий. Трудно сказать. Для работы именно с XML существует куча различных библиотек, в т.ч. и в самой 1С-ине. То что опубликовано здесь - несколько из другой оперы. Т.е. это больше связано с разборами каких-либо сложных строк. Ну например, эта штука использовалась для специальной разметки текстов сценариев калькуляции производственной программы.
sergeante; +1 Ответить
3. sergeante 03.06.09 12:40 Сейчас в теме
Это всё интересно как упражнение для ума. По мне так, если не критична скорость разбора, то проще использовать регэкспры.
4. o.nikolaev 211 03.06.09 15:58 Сейчас в теме
(3) Да, регэкспы отличная штука. Просто этот код работает и для следующей строки: "<ТЕГ атрибут1=значение1 атрибут2='значение2' атрибут3="значение2"">".
Я плохо умею составлять регэксп выражения. Какое выражение потребуется для разбора данной строки? Т.е. чтобы можно было получить на выходе функции: имя тега, список атрибутов, список значений атрибутов. Код использующий конечный автомат (несмотря на то чтокому-то кажется страшным это слово) все-же довольно ясный и позволяет быстро добавлять еще каки-либо разделители и т.п. Впрочем, все это ИМХО. Могу сказать что мне эта штука пригодилась в реальной работе. Причем прикрутить регэкспы к этой задаче я быстро не смог. Возможно, пригодится еще кому-нибудь. Собственно потому и выкладываю. :-) Всем удачного кодирования!
5. 1snik 04.06.09 09:15 Сейчас в теме
(4) как раз для таких штук регулярные выражения - самое оно. щас освобужусь маленько - напишу, там работы то - 5 минут :) конечные автоматы для более сложных вещей, наверное
6. 1snik 04.06.09 22:02 Сейчас в теме
(4) короче, типа так: "<ТЕГ\s+(([а-я0-9]+)\s*=\s*([а-я0-9'"]+)\s*)*>"
это очень грубо и не строго :) в смысле, будет обрабатывать правильные строки, но и некоторые неправильные тоже будет считать правильными :) чтобы точно - неохота запариваться
здесь есть клевая обработка по этой теме
http://infostart.ru/projects/808/
7. o.nikolaev 211 05.06.09 07:49 Сейчас в теме
(6) Спасибо. Обязательно посмотрю.
8. Eraser 22.09.11 10:33 Сейчас в теме
Спасибо за комментарий.
Оставьте свое сообщение