Visual Studio 2010 이후에는 std::tr1의 namespace에서 regex가 지원된다.
이번 버전이라면 boost Library를 다운받아서 설치해야 한다. (http://www.boost.org)
원래는 Multibyte 에서는 regex 라는 class를 사용하고,
Unicode에서는 wregex 를 사용한다.
하지만 2개의 차이는 typedef basic_regex<char> regex
typedef basuc_regex<wchar_t> wregex
의 차이일 뿐이다.
char, wchar_t를 대신해서 _TCHAR 를 활용하는 것을 응용해서 아래 Code와 같이 하면
Multibyte, Unicode에서 모두 사용가능한 Regular Expression 이 된다.
#include <regex> const bool IsRealNumber(CString &p_str) { using namespace std::tr1; bool bRet = false; basic_regex<_TCHAR> exp(_T("^([0-9]+.[0-9]*)|([0-9]*.[0-9+)|([0-9]+)$")); if (regex_match<_TCHAR, regex_traits<_TCHAR>(p_str.GetBuffer(), exp)) bRet = true; p_str.ReleaseBuffer(); return bRet; }
위 예제는 실수인지를 판단하는 Code이다.
정규식 규칙 (MSDN) : http://msdn.microsoft.com/ko-kr/library/2k3te2cs(v=vs.100).aspx
댓글 없음:
댓글 쓰기