是否可以在 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>
有没有办法搜索模式,比如搜索<*>
where*
表示任意数量的任意值的字符,获取 的值*
,将其拆分为参数和节点名称,然后搜索</nodename>
并获取介于<nodename>
和之间的值</nodename>
?