2012-08-06 2 views
0

나는 C++에서 작업 중이다.C++에서 정규 표현식을 검색하는 방법은 무엇입니까?

주어진 문자열에서 주어진 정규 표현식을 검색해야한다. 그것을하기위한 포인터를 제게 제공하십시오. boost :: regex 라이브러리를 사용하려고했습니다. 나 다른 캐릭터를 다음의 검색이 상술 한 식 "get*"

: 그리고 정규식 검색 :

다음 정규 표현 예를

1. "com::sun::star:getMethodName" 
2. "com:sun:star::SetStatus" 
3. "com::sun::star::getMessage" 

그래서 위의 경우에는 첫 번째 문자열에 대해서는 false를, 두 번째 문자열에는 false를, 세 번째 문자열에는 다시 true를 반환해야합니다. 미리 감사드립니다.

답변

2
boost::regex re("get.+"); 

예. 사용자의 입력에 대한

#include <iostream> 
#include <string> 
#include <boost/regex.hpp> 
#include <vector> 
#include <algorithm> 

int main() 
{ 
    std::vector<std::string> vec = 
    { 
     "com::sun::star:getMethodName", 
     "com:sun:star::SetStatus", 
     "com::sun::star::getMessage" 
    }; 
    boost::regex re("get.+"); 
    std::for_each(vec.begin(), vec.end(), [&re](const std::string& s) 
    { 
     boost::smatch match; 
     if (boost::regex_search(s, match, re)) 
     { 
     std::cout << "Matched" << std::endl; 
     std::cout << match << std::endl; 
     } 
    }); 
} 

http://liveworkspace.org/code/7d47ad340c497f7107f0890b62ffa609

+0

감사합니다. 그것은 작동하지만 우리가 리눅스 야생 문자를 사용할 수없는 하나의 쿼리가 있습니까? 우리가 사용할 수있는 문자는 무엇입니까? " 위에 사용됩니까? – BSalunke

+2

@ BSalunke ehm, 문서를 읽으시겠습니까? http://www.boost.org/doc/libs/1_50_0/libs/regex/doc/html/boost_regex/syntax/perl_syntax.html. 이 정규식을 사용할 수도 있습니다 : boost :: regex re ("get \\ w +"); – ForEveR

+0

예, Perl 정규식 구문을 통해 갔지만 C++에서 정규식을 구문 분석해야합니다. 그렇다면 야생 캐릭터는 무엇을 사용해야합니까? – BSalunke

관련 문제