#c #regex #boost
#c #регулярное выражение #ускорьте
Вопрос:
Здравствуйте, просмотрев существующие ярлыки по этой теме и ничего не найдя, я подумал, что спрошу здесь. По сути, я новичок в regex и C , но пытаюсь перенести некоторый устаревший код на C . Мы высоко ценим любую помощь с точки зрения даже литературы для чтения.
У меня есть строка шаблона, которая выполняет поиск "Life\s*Policy\s*=\s*(([0-9] )|[0-9] \.[0-9]*);"
в строке, которая является «Политика жизни = 9,67; Пожизненные льготы = 1000; Требование жизни = 100»
Как я могу использовать regex_search
функцию для получения значения 9.67
, чтобы я мог использовать его в своих дальнейших вычислениях??
В настоящее время у меня есть этот код, и я не могу извлечь то, что я хочу:
std::string::const_iterator begin;
boost::match_results<std::string::const_iterator> what;
begin = st.begin();
boost::match_flag_type flags = boost::match_perl;
while(boost::regex_search(begin,st.end(),what,ex,flags))
{
successcode = 200;
}
Моя идея заключалась в том, что what будет содержать всю необходимую мне информацию. но what[0].first
указывает мне на начало строки, которая соответствует … т.е Life Policy = 9.67;Life Claims = ..
Ответ №1:
what[0]
соответствует всей строке. what[1]
представляет первое совпадение, what[2]
второе и так далее.
Комментарии:
1. Не забудьте выйти из цикла while. Если вам нужно продолжить поиск в строке, вы должны обновить итератор begin, как показано ниже start = what[0].второй;