2011-02-20 4 views
2

전 C에서의 robots.txt 파서를 쓰고 ++무슨 정규식 일치

boost::regex exrp("^User-agent:\s*(.*)"); 

       boost:: match_results<string::const_iterator> what; 

        if(boost::regex_search(robots, what, exrp)) 

        { 

         string s(what[1].first, what[1].second); 


         cout<< s; 
        } 

이 * 이름을 가진 사용자 에이전트와 일치해야하지만, 그것은 당신이 그것을 원하는 경우 모든 datas

+0

"data"는 이미 복수형입니다. –

답변

4

C++ 0x 원시 문자열을 사용하지 않는 경우 이중 백 슬래시 '\\'이 필요합니다.

2

을 반환 ++ 내 C 문제 경기 또한 단지User-agent: *하지 (예) 당신이

"^User-agent:\\s*\\*" 

* 문자는 특별한 의미가 필요하므로 ES해야 User-agent: webcrawler\으로 상한. 귀하의 코드에있는 (.*)은 0 개 이상의 문자가 나오는 부분과 일치하며 일치하는 부분을 캡처합니다.

편집 :고무 장화에 의해 지적 또한 백 슬래시를 이스케이프해야합니다.

+0

이 경우에는 "^ User-agent : \\ s * \\\ *"가 표시됩니다. –

+0

좋은 점 : 고정되었습니다. –