Привет всем. Есть строка "<tag1>значение</tag1>" Как мне вытянуть "значение" из строки? Приложение пешеться на Winapi и использовать другие библиотеки я не могу. Есть в С ф-и для парсинга? Заранее все благодарен.
27.02.08 15:24: Перенесено модератором из 'C/C++' — Кодт
Re: Парсинг строки
От:
Аноним
Дата:
25.02.08 13:37
Оценка:
Здравствуйте, satarus, Вы писали:
S>Привет всем. Есть строка "<tag1>значение</tag1>" Как мне вытянуть "значение" из строки? Приложение пешеться на Winapi и использовать другие библиотеки я не могу. Есть в С ф-и для парсинга? Заранее все благодарен.
Здравствуйте, Аноним, Вы писали:
А>либо, если в тэге могут быть аттрибутыто можно делать парсинг с конца
+ если это HTML — нужно помнить о комментариях.
Здравствуйте, satarus, Вы писали:
S>Привет всем. Есть строка "<tag1>значение</tag1>" Как мне вытянуть "значение" из строки? Приложение пешеться на Winapi и использовать другие библиотеки я не могу. Есть в С ф-и для парсинга? Заранее все благодарен.
А почему ATL CAtlRegExp класс не используете?
Это что же template'ная библиотека, фактически в сорцах... никаких зависимостей от других dll и тп
Здравствуйте, satarus, Вы писали:
S>Привет всем. Есть строка "<tag1>значение</tag1>" Как мне вытянуть "значение" из строки? Приложение пешеться на Winapi и использовать другие библиотеки я не могу. Есть в С ф-и для парсинга? Заранее все благодарен.
Если у тебя язык разметки — честный HTML или XML, то дёшево ты не отделаешься.
Там могут быть
— пробельные символы в ассортименте
— комментарии
— вложенные тэги, не дай бог
Придётся взять парсер, а в случае HTML ещё и валидатор может понадобиться...
Если же ты уверен в строгости формата строки — то либо любой регексп, либо захардкодить ручками.
Здравствуйте, satarus, Вы писали:
S>Привет всем. Есть строка "<tag1>значение</tag1>" Как мне вытянуть "значение" из строки? Приложение пешеться на Winapi и использовать другие библиотеки я не могу. Есть в С ф-и для парсинга? Заранее все благодарен.
strchr Ищет первое появление литеры ch в строке string.
strcmp Посимвольно сравнивает две строки
strcmpl Сравнивает две строки, трактуя литеры нижнего и верхнего регистра как одинаковые.
strcpy Копирует строку string2 в string1, включая завершающую литеру '\0'. Возвращает string1.
strcspn Исследует строку string1 на первое появление литеры из строки string2.
гугля рулит
Все имена функций и классов изменены, любое совпадение является случайным.
Re[2]: Парсинг строки
От:
Аноним
Дата:
28.02.08 07:29
Оценка:
Здравствуйте, nik0lay, Вы писали:
N>Здравствуйте, satarus, Вы писали:
S>>Привет всем. Есть строка "<tag1>значение</tag1>" Как мне вытянуть "значение" из строки? Приложение пешеться на Winapi и использовать другие библиотеки я не могу. Есть в С ф-и для парсинга? Заранее все благодарен.
N>
N>strchr Ищет первое появление литеры ch в строке string.
N>strcmp Посимвольно сравнивает две строки
N>strcmpl Сравнивает две строки, трактуя литеры нижнего и верхнего регистра как одинаковые.
N>strcpy Копирует строку string2 в string1, включая завершающую литеру '\0'. Возвращает string1.
N>strcspn Исследует строку string1 на первое появление литеры из строки string2.
N>
Здравствуйте, игппук, Вы писали:
И>используйте функцию sscanf. правильно подобранное регулярное выражение решит вашу задачу.
А можно вот тут поподробнее? sscanf поддерживает регэкспы, вы не ошиблись? а если вы говорили не про регэкспы, то приведите пример, как распарсить сабж sscanf'ом?
Здравствуйте, satarus, Вы писали:
S>Привет всем. Есть строка "<tag1>значение</tag1>" Как мне вытянуть "значение" из строки? Приложение пешеться на Winapi и использовать другие библиотеки я не могу. Есть в С ф-и для парсинга? Заранее все благодарен.
На чистом С ? Или С++, если второе, то где-то на codeproject.com валялся парсер html-я.
Compiler can be as trained AI but can't compose music.
Antheil piano jazz sonata. Я болен ПГМ.
Здравствуйте, ol-lv, Вы писали:
OL>Здравствуйте, satarus, Вы писали:
S>>Привет всем. Есть строка "<tag1>значение</tag1>" Как мне вытянуть "значение" из строки? Приложение пешеться на Winapi и использовать другие библиотеки я не могу. Есть в С ф-и для парсинга? Заранее все благодарен. OL> На чистом С ? Или С++, если второе, то где-то на codeproject.com валялся парсер html-я.
Здравствуйте, _gc, Вы писали:
_gc>А можно вот тут поподробнее? sscanf поддерживает регэкспы, вы не ошиблись? а если вы говорили не про регэкспы, то приведите пример, как распарсить сабж sscanf'ом?
непосредственно для вышеуказанной задачи вполне подойдет следующее регулярное выражение
char* text = "<tab1>value</tab1>";
char buffer[256] = {0};
sscanf(text, "<tab1>%[^<]", buffer); //в buffer получаем value