안녕하세요 만해입니다.
업무상 문자열 처리를 자주 해야 하기에
제가 약한 문자열 처리를 보완 할수 있는 방법을 찾던 도중
이전에 김백일 님께서 올려 놓은 boost 라이버러리의 regex가 생각나서
boost 라이버러리를 이용해 볼려고
지난주 토요일날
http://boost.org에서 boost 를 받아서 빌더에 설치 했었습니다.
다운 받은 버젼은 1.32 버젼이고요 bjam은 boost-jam-3.1.10-1-ntx86.zip 파일을 다운 받았고
설치는 이전에 김백일님께서 알려 주신데로
$(BCB)Inlcude\boost_1_32_0 에 압축을 풀은후
bjam도 같이 풀어 놓고
bjam "-sTOOLS=borland" 커맨드로 설치를 했습니다.
대략 30분 정도의 컴파일 시간이 끝난후
설치가 완료 되고 Console 프로젝트를 간단한걸로 만들어서
테스트를 해봤는데요
소스는 이전에 김백일님이 올린 소스에서 약간 고쳐서 했습니다.
#include <locale>
#include <iostream>
#include <boost/regex.hpp>
#include <string>
using namespace std;
using namespace boost;
using std::cout;
using std::wcout;
using std::endl;
int main(int argc, char* argv[])
{
cout << "\nregex_search for const char*" << endl;
const char* source = "
here"";
boost::reg_expression<char> regex;
regex.str().assign("(([a-z]+):)? //([^:/]+)(:([0-9]+))? /([a-zA-Z. 0-9]*)");
boost::match_results<const char*> results;
cout << "URL = " << source << endl
<< "regex = " << regex. str() << endl;
if ( boost::regex_search(source, results, regex) ) {
cout << " scheme :" << results. str(2) << endl
<< " host :" << results. str(3) << endl
<< " port :" << results. str(5) << endl
<< " path :" << results. str(6) << endl;
} else
cout << "no match. " << endl;
}
위의 소스 파일을 컴파일 시킨후 빌드하고 f8키로 순차 수행을 시켜서
제대로 되는지 볼려고 했는데요
자꾸 not match만 나오네요
설치 과정에서 뭐가 잘못 됐는지 아니면 다른 뭔가 더 세밀한 조정이 필요한건지 누가좀 알려주세요
아참 그리고 C++ Standard 2003이 발표 됐다고 해서 찾아 봤는데요
C+++ 표준 2003에서는 regex가 표준 STL에 포함되어 잇던데
빌더는 아직 2003을 지원 못하죠?
정규 표현식 라이버러리 한번 써 볼려고 이리 저리 발악을 하고 있는데 잘 안되네요
고수님들의 도움을 기다립니다.