| 1 | #include <iostream>
|
|---|
| 2 | #include "boost/regex.hpp"
|
|---|
| 3 |
|
|---|
| 4 | void boostTest()
|
|---|
| 5 | {
|
|---|
| 6 | std::string toTest = "abc<NPC><NPC>12345</NPC>1</NPC>2<NPC>3</NPC>";
|
|---|
| 7 | std::string regstr = "<(?<HtmlTag>NPC)>((?<Nested><\k<HtmlTag>>)|</\k<HtmlTag>>(?<-Nested>)|.*?)*</\k<HtmlTag>>";
|
|---|
| 8 | boost::smatch what;
|
|---|
| 9 | boost::regex expr(regstr);
|
|---|
| 10 | std::string::const_iterator start = toTest.begin();
|
|---|
| 11 | std::string::const_iterator end = toTest.end();
|
|---|
| 12 | int pos = 0;
|
|---|
| 13 | while (boost::regex_search(start, end, what, expr))
|
|---|
| 14 | {
|
|---|
| 15 | std::cout << "Match group " << ++pos << ":" << std::endl;
|
|---|
| 16 | for (int i = 0; i < what.size(); i++)
|
|---|
| 17 | {
|
|---|
| 18 | std::string msg(what[i].first, what[i].second);
|
|---|
| 19 | std::cout << i << ": " << msg.c_str() << std::endl;
|
|---|
| 20 | }
|
|---|
| 21 | start = what[0].second;
|
|---|
| 22 | }
|
|---|
| 23 | }
|
|---|
| 24 |
|
|---|
| 25 | int main()
|
|---|
| 26 | {
|
|---|
| 27 | boostTest();
|
|---|
| 28 | return 0;
|
|---|
| 29 | }
|
|---|