在字符串中搜索模式

时间:2013-04-10 20:48:53

标签: c++

是否可以在C ++中搜索std :: string中的某些模式?

我知道find()find_first_of()等等,但我正在寻找更高级的东西。

例如,请使用此XML行:<book category="fantasy">Hitchhiker's guide to the galaxy </book>

如果我想使用find()解析它,我可以按如下方式进行解析:

string line = "<book category=\"fantasy\">Hitchhiker's guide to the galaxy </book>"

size_t position = line.find('>');
std::string tmp = line.substr(0,position);
position = tmp.find(' ');
std::string node_name = tmp.substr(0, position);
std::string parameters = tmp.substr(position+1);

...

这感觉非常“肮脏”且效率低下。如果我有多个嵌套在彼此内部的标签,它也会失败,如下所示:

<bookstore><book category=\"fantasy\">Hitchhiker's guide to the galaxy </book></bookstore>

是否有搜索模式的方法,例如搜索<*>,其中*表示任意值的任意数量的字符,获取*的值,将其拆分为参数和节点名称,然后搜索</nodename>并获取<nodename></nodename>之间的值?

0 个答案:

没有答案