2011-05-12 5 views
2

안녕하세요.이 항목의 기존 레이블을 살펴본 후 아무 것도 찾지 못했지만 여기에서 물어볼 것이라고 생각했습니다. 본질적으로 나는 정규 표현식과 C++에 대한 초보자이지만, 레거시 코드를 C++로 이식하려고하고있다. 읽어야 할 문학에 대한 도움이 있으면 대단히 감사하겠습니다.구조화되지 않은 문자열의 regex_search 향상

내가하는 문자열에 "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[0].first은 일치하는 문자열의 시작 부분을 가리 킵니다. 즉 Life Policy = 9.67;Life Claims = ..

답변

2

what[0]은 전체 문자열과 일치합니다. what[1]은 첫 번째 일치를 나타내며 what[2] 두 번째 등을 나타냅니다.

+0

마리우스에게 감사드립니다. [1] 내가 필요한 것을 가져야한다는 것을 의미합니까 ?? – user751279

+0

물론, 미안하지만, 나는 잘못 입력했다. –

+0

while 루프를 벗어나는 것을 잊지 마십시오. 라인 검색을 계속해야한다면 다음과 같이 begin iterator를 업데이트해야합니다. start = what [0] .second; –

관련 문제