请问一个取字符串的问题。万分感谢
有一个字符串
str= "(T01[1,2]+T02[1,3])+(T03[1,4]+T04[1,5])*T01[2,2] ";
可能是别的样子的,但是肯定包含T*[*,*]
请问我如何将其中的所有T*[*,*]取出来放入一个数组里。能不能用正则表达式来实现?
比如以上字符串就应该把
T01[1,2]
T02[1,3]
T03[1,4]
T04[1,5]
T01[2,2]
放入数组。
[解决办法]
不知你用的是什么正则表达式库(BCB自带的太简单了),我用boost库:
就你上面的数据来说,可用以下程序:
{
string str= "(T01[1,2]+T02[1,3])+(T03[1,4]+T04[1,5])*T01[2,2] ";
regex reg( "(T\\d{2}\\[\\d,\\d\\]) ");
sregex_iterator it(str.begin(),str.end(),reg);
sregex_iterator end;
String t;
while (it!=end)
{
t=(*it)[1].str().c_str();
Memo1-> Lines-> Add(t);
it++;
}
}
当然,可按你其它的数据格式找规律
[解决办法]
再看了了下你的数据,可以不用正则表达式,直接用strtok就可以了:
String str= "(T01[1,2]+T02[1,3])+(T03[1,4]+T04[1,5])*T01[2,2] ";
char *p;
p = strtok(str.c_str(), "()+* ");
while(p)
{
Memo1-> Lines-> Add(p);
p = strtok(NULL, "()+* ");
}
[解决办法]
mark!strtok这么爽,感谢keiy
[解决办法]
up
[解决办法]
strtok(str.c_str(), "()+* ");
这个太爽了吧。。。
又学了一招。感谢下keiy