我有以下字符串:
const char *str = "\"This is just some random text\" 130 28194 \"Some other string\" \"String 3\""
我想获得整数28194
当然整数变化,所以我不能strstr("20194")
。
所以我想知道获取该部分字符串的好方法是什么?
我正在考虑使用#include <regex.h>
我已经有一个匹配regexp的程序,但不确定C中的正则表达式如何使用POSIX样式表示法。 [:alpha:]+[:digit:]
如果表现会出现问题。或者使用strchr,strstr
会更好吗?
任何想法都会欣赏它
答案 0 :(得分:0)
如果您想使用正则表达式,可以使用:
const char *str = "\"This is just some random text\" 130 28194 \"Some other string\" \"String 3\"";
regex_t re;
regmatch_t matches[2];
int comp_ret = regcomp(&re, "([[:digit:]]+) \"", REG_EXTENDED);
if(comp_ret)
{
// Error occured. See regex.h
}
if(!regexec(&re, str, 2, matches, 0))
{
long long result = strtoll(str + matches[1].rm_so, NULL, 10);
printf("%lld\n", result);
}
else
{
// Didn't match
}
regfree(&re);
你还有其他方法。
编辑:更改为使用非可选重复并显示更多错误检查。