2010-03-12 6 views
3

새로운 버전의 부스트 1.42로 작업하고 있으며 명명 된 하위 그룹과 함께 정규 표현식을 사용하고 싶습니다. 아래 예.하위 그룹 이름 얻기

std::string line("match this here FIELD=VALUE in the middle"); 
boost::regex rgx("FIELD=(?<VAL>\\w+)", boost::regex::perl); 
boost::smatch thisMatch; 
boost::regex_search(line, thisMatch, rgx); 

일치하는 콘텐츠를 얻는 방법을 알고 있습니까? 전통적인 방법은 내가이 방법을 사용하지 않는

std::string result(mtch[1].first, mtch[1].second); 

하지만 입니다.

Perl과 정규 표현식에서 일반적으로 하위 그룹의 이름을 사용하고 싶습니다. 시도했지만 작동하지 않았습니다.

std::string result(mtch["VAL"].first, mtch["VAL"].second); 

하위 그룹의 이름을 사용하여 값을 얻는 방법을 알고 있습니까?

감사 AFG

+0

원하는 방식과 원하지 않는 방식의 차이점은 무엇입니까? 문장은 완전히 동일합니다. – kennytm

+0

당신이 옳습니다. 샘플의 코드를 방금 변경했습니다. –

+0

안녕하세요. 아래를 한번보세요. 내가 필요한 것을 찾았습니다! 좋은 주말 보내세요! –

답변

1

AFAIK는 그런 옵션이 없습니다. 을 참조하십시오. 특히 Perl 및 Boost.Regex 동등성에 관한 표를 참조하십시오. 모든 일치 항목에 액세스하려면 boost::match_results<IteratorType>을 사용해야합니다.

+0

안녕하세요. URL에 감사드립니다. 솔루션을 찾았습니다. 아래에서 쓴 내용을 참조하십시오! 좋은 주말 보내세요! –

1

나는 마침내 내가 성취하고자하는 것을 발견했다.

std::cout << mtch["VAL"] << std::endl; 

시도했지만 아무런 문제없이 작동합니다.

부울 버전 1.42부터 사용 가능한 기능이라고 생각합니다. 확실하지 않습니다.