ускорить поиск регулярных выражений - как прочитать результат - PullRequest
0 голосов
/ 04 апреля 2019

Я использую регулярное выражение для размещения текста между тегами:

std::string data = "<tagA>aaa</tagA><tagB>bbb</tagB><tagC>ccc</tagC>";
boost::regex expr("<tagB>(.*)</tagB>");
boost::smatch smatch;

boost::regex_search(data, smatch, expr);
//smatch[0] <tagB>bbb</tagB>
//smatch[1] bbb

Я ищу строку bbb, которая хранится в smatch[1], но чтение чего-либо на основе числового индекса выглядит не очень хорошо. Есть ли другой способ получить результат? Может быть, я должен изменить регулярное выражение, чтобы получить один элемент smatch или использовать другой интерфейс?

1 Ответ

0 голосов
/ 05 апреля 2019

вы забыли \:

<tagB>(.*)<\/tagB>

в boost.regex, yourdata [0] соответствует глобальному совпадению, тогда ваши данные [0 + i] соответствуют i-му совпадению.

...