Повысить поиск регулярных выражений для неструктурированных строк

#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].второй;