본문 바로가기
코드/c/c++

정규식 표현 간단한 문법

by WeZZ 2008. 10. 2.

참고 관련 사이트 주소

http://madchick.egloos.com/1329019
http://regexlib.com/
http://www.codeproject.com/KB/tips/CollapsingProgressBars.aspx
http://creorix.com/tc/18
http://blog.naver.com/mydaylee?Redirect=Log&logNo=140035640151
http://broost.com/


정규식 표현

문자열을 검색, 치환 과정에서 사용.

 

 

특수 문자

-          ‘.’ 임의의 한글자만 표현

n          Ex) a.e -> abe, ace ..

-          ‘*’ 바로 앞의 문자를 의미 문자X가 없거나 그 하나 이상 (  ‘*’ 앞에 하나이상 문자 존재)

n          Ex) s*e -> sse, sae, adffe,….

-          ‘+’ 바로 앞의 문자를 의미 하나 이상

n          Ex) s+e -> sse, ase….

-          ‘?’ 바로 앞의 문자가 없거나 있음

n          Th?e -> te , the, their…

-          ‘^’ 바로 뒤의 문자열을 기준으로 동일한 문자열로 시작

n          ^the - > the girl ..

-          ‘$’ 문자열의 맨 마지막

n          er$  -> gunner..

-          ‘[]’ []안에 있는 문자열중에서 하나의 문자만을 의미 ( 범위를 지정할 땐 ‘-‘)

n          [ab]cd -> acd , bcd..

n          [0-9] -> 1,  4, ..

-          ‘[^]’ []안에 있는 문자를 제외한 값을 의미

n          [^ad]cd -> cd..

-          ‘{}’ {}앞에 있는 문자나 문자열의 개수를 의미

n          A{2}b -> aab…   a{1,5}b -> aaaab , ab, aab,…

-          ‘()’ ()안에 있는 글자들을 그룹화 한다.

n          a(bc){2} -> abcbc……

-          ‘|’ Or연산자

n          Kim | lee

문자 클래스

-          [[:alnum:]]       -> [a-z0-9A-Z]

-          [[:alpha:]]       -> [a-zA-Z]

-          [[:graph:]]       -> 공백 문자를 제외한 화면에 출력 가능한 문자

-          [[:space:]]      -> 공백 문자, \n ,\t, \r( white space 문자 )

-          [[:bank:]]        -> 공백 문자 ,

-          [[:lower:]]        -> 소문자를 의미 [a-z]

-          [[:upper:]]       -> 대문자를 의미 [A-Z]

-          [[:cntrl ]]         -> 컨트롤 문자

-          [[:digit:]]         -> 숫자 한자를 의미 [0-9]

-          [[:xdigit:]]        -> 16진수에 쓰이는 문자를 의미

 

정규식 표현에서 특수 문자 표현

-          ^ . [ ] & ( ) | * + ? {} \ -

-          위와 같은 문자를 표현하기 위해 ‘\’를 앞에 붙여야 한다.

n          \*+ -> * 포함된 문자열 검색

n          \[RE:[1-9][0-9*W] -> [RE:10],[RE:34]

n          [*\/+?{}.]

 

\n

줄넘김 문자

\r

리턴 문자

\w

알파벳과 _ (언더바)

\W

알파벳과 _ 가 아닌 것

\s

빈 공간(space)

\S

빈 공간이 아닌 것

\d

숫자

\D

숫자가 아닌 것

\b

단어와 단어 사이의 경계

\B

단어 사이의 경계가 아닌 것

\t

Tab 문자

\xnn

16진수 nn에 해당하는 문자

 


간단한 Souce code


   boost::regex expression("[a-z]");

    char szBuf[1024] ; 
    boost::cmatch whatMatch; 
    HWND hWnd = ::GetDlgItem(m_hWnd,IDC_EDIT1) ;
    ::GetWindowText(hWnd,szBuf,1024) ; 


    if(boost::regex_match(szBuf, whatMatch, expression)) 
    {
      return;
    }