我收到了这种格式的字符串:
Stuff: </value_1/value_2/value_3>; key="value"
我需要解析的是value_1
,value_2
和value_3
以及key
/ value
对。 value_3
可能会也可能不会出现在字符串中。
在C中使用什么才能完成这项工作?
我考虑过sscanf
但是值可以是仲裁大小,因此应该动态分配它们。 strtok
本来是我的下一个想法,但可能需要两个单独的循环来提取/
分隔值和key
/ value
对......看起来很乏味但至少可行
任何有更多C经验的人都有更好的想法吗?
编辑:正则表达式可能是一个选项,但如果可能的话我更喜欢标准的字符串函数。
答案 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:
是什么,或者在提取中是否需要它,或者只是您的提升。