用C解析字符串 - 什么是正确的工具?

时间:2011-10-23 09:12:40

标签: c string parsing

我收到了这种格式的字符串:

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

我需要解析的是value_1value_2value_3以及key / value对。 value_3可能会也可能不会出现在字符串中。

在C中使用什么才能完成这项工作?

我考虑过sscanf但是值可以是仲裁大小,因此应该动态分配它们。 strtok本来是我的下一个想法,但可能需要两个单独的循环来提取/分隔值和key / value对......看起来很乏味但至少可行

任何有更多C经验的人都有更好的想法吗?

编辑:正则表达式可能是一个选项,但如果可能的话我更喜欢标准的字符串函数。

2 个答案:

答案 0 :(得分:1)

你可以使用正则表达式;见Regular Expressions - The GNU C Library

如果你不知道正则表达式是什么;见Regular Expressions

以下是在线regular expression editor(或this one,如果您没有安装Flash),那么您可以测试正则表达式!

答案 1 :(得分:1)

如果你使用"</>; =\""作为分隔符集,那么strtok()将在一次传递中工作,依次提取:

Stuff:
value_1
value_2
value_3
key
value

不确定Stuff:是什么,或者在提取中是否需要它,或者只是您的提升。