Russian Qt Forum
Ноябрь 25, 2024, 10:25 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: RegExp или работа со строкой.  (Прочитано 11325 раз)
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #15 : Январь 21, 2013, 14:05 »

Ну хорошо
Собственно вариаций может быть много, но есть чёткая структура. Хотелось бы возможности вбить шаблон аля "index: (utf8string (v i=%1))" и в результате на выхлопе получить массив из содержимого между "index: (utf8string (v i=" и ")".
Если я верно понял, парсер не требуется, нужно только определить сбивается строка по форматке или нет. Тогда вроде и смысла нет запрягать какой-то тул. Задаем форматку  "index: (utf8string (v i=%1))"

1) По форматке ищем %, имеем подстроку от начала до %
2) Сравниваем подстроку с текущей (ну возможно без учета пробелов и табов). В результате имеем позицию что соответствует % в текущей строке
3) Извлекаем значение из текущей строки
4) Возможно проверяем хвостики на совпадение
Записан
Bepec
Гость
« Ответ #16 : Январь 21, 2013, 14:06 »

Ну собственно данный экземпляр велосипеда недавно начал свою работу третьим колесом Веселый
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #17 : Январь 21, 2013, 14:13 »

Ну собственно данный экземпляр велосипеда недавно начал свою работу третьим колесом Веселый
И что здесь плохого? Почему надо обязательно "чем-то воспользоваться"?  Улыбающийся
Записан
Bepec
Гость
« Ответ #18 : Январь 21, 2013, 14:16 »

Я просто обоснованно думаю, что мой код, использующий всякие indexOf,  по сравнению с другими решениями, очень медлителен и затратен Улыбающийся
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #19 : Январь 21, 2013, 14:29 »

Я просто обоснованно думаю, что мой код, использующий всякие indexOf,  по сравнению с другими решениями, очень медлителен и затратен Улыбающийся
Точно. Проще один раз описать все правила и забыть про его разбор, чем после каждого чиха, что-то дописывать, отлаживать и проверять.
Записан
panAlexey
Гипер активный житель
*****
Offline Offline

Сообщений: 864

Акцио ЗАРПЛАТА!!!!! :(


Просмотр профиля
« Ответ #20 : Январь 21, 2013, 15:57 »

Прошу совета - имеется ли готовое решение на базе RegExp или ином виде, для того чтобы:

из строки вида
Цитировать
index: (utf8string (v i=1105))
name: (string (v s=Тряляля))
Получить на выходе массив
Цитировать
[1] 1105
[2] Тряляля

Собственно вариаций может быть много, но есть чёткая структура. Хотелось бы возможности вбить шаблон аля "index: (utf8string (v i=%1))" и в результате на выхлопе получить массив из содержимого между "index: (utf8string (v i=" и ")".
Интересно, кто автор этого велосипеда? Улыбающийся
Записан

Win Xp SP-2, Qt4.3.4/MinGW. http://trdm.1gb.ru/
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #21 : Январь 21, 2013, 16:56 »

.*[=:].*\(.*\(.*=(.*)\)\)
Записан

Qt 5.11/4.8.7 (X11/Win)
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #22 : Январь 21, 2013, 17:07 »

а если втупую =(.+)\)\) ? нас же не интересует начало.
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Bepec
Гость
« Ответ #23 : Январь 22, 2013, 07:35 »

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

Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #24 : Январь 22, 2013, 10:01 »

Создатель сиего творения почивает лавры в далёёёких далях Улыбающийся
Наверное "на лаврах" Улыбающийся Все равно - не пойму какие основания для фыркания и "поджимания губок", дескать, ах, какой велосипед - ну почему же он не воспользовался чем-то известным, напр xml или json. Ну может не у всех под рукой мощный инструментарий, или не все хотят им обязательно пользоваться. 

а если втупую =(.+)\)\) ? нас же не интересует начало.
По смыслу - должно интересовать, напр мы не должны добавлять в массив int если тип string
Записан
Bepec
Гость
« Ответ #25 : Январь 22, 2013, 10:32 »

to igors: Угум. Первая часть тоже будет интересовать. Но в дальнейшей перспективе.

На данный момент нужен был огрызок функционала. Структура данных в самом классе выстраивается за счёт точного знания структуры данных.

РегЭсп не осилил многообразия, использую свой велосипед.

Почему такой непонятный формат и почему не написать самому?

Потому что нужно : "когда было нужно? в прошлом году".
Написать самому потому что : "в результате придётся написать свой парсер".

PS а формат является, насколько я помню, алгоритмом сериализации "parens".

Попозж
Записан
panAlexey
Гипер активный житель
*****
Offline Offline

Сообщений: 864

Акцио ЗАРПЛАТА!!!!! :(


Просмотр профиля
« Ответ #26 : Январь 22, 2013, 10:40 »

Немного похоже на IBM-овские файлы конфигурации.
Записан

Win Xp SP-2, Qt4.3.4/MinGW. http://trdm.1gb.ru/
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.051 секунд. Запросов: 23.