Разбор строки с помощью C - какой правильный инструмент? - PullRequest
3 голосов
/ 23 октября 2011

Я получил строку в этом формате:

Stuff: </value_1/value_2/value_3>; key="value"

Мне нужно проанализировать value_1, value_2 и value_3 вместе с парой key / value. value_3 может присутствовать или не присутствовать в строке.

Что бы использовать в C для того, чтобы это сделать?

Я думал о sscanf, но значения могут быть произвольного размера, поэтому их следует распределять динамически. strtok была бы моей следующей идеей, но для этого, вероятно, нужны два отдельных цикла для извлечения разделенных значений / и пары key / value ... кажется утомительным, но по крайней мере выполнимым.

Кто-нибудь с большим опытом в Си имеет лучшую идею?

РЕДАКТИРОВАТЬ: регулярное выражение может быть вариантом, но я бы предпочел стандартные строковые функции, если это вообще возможно.

Ответы [ 2 ]

1 голос
/ 23 октября 2011

Если вы используете "</>; =\"" в качестве набора разделителей, то strtok () будет работать за один проход, извлекая по очереди:

Stuff:
value_1
value_2
value_3
key
value

Не уверен, что такое Stuff:, или нужно ли оно для извлечения, или просто исключение с вашей стороны.

1 голос
/ 23 октября 2011

Вы можете использовать регулярные выражения;см. Регулярные выражения - Библиотека GNU C .

Если вы не знаете, что такое регулярные выражения;см. Регулярные выражения .

Вот онлайн редактор регулярных выражений (или этот , если у вас не установлен Flash), поэтомуВы можете проверить свое регулярное выражение!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...