ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • # Regular Expressions
    플밍/PHP+MySQL 2011. 8. 29. 05:27
    # Regular Expressions 

    2007/04/23 01:05


    PHP 정규표현식 (Regular expression)  정리  

    글쓴이 : 오렌지블루 
    출처 : codelib.co.kr , koreaphp.co.kr 
    작성일 : 2002/03/02 11:54:16

    이거저거 짜깁기 했음. -_-; 

    정규표현식은 보통 eregi, eregi_replace, ereg, ereg_replace, 또는 perl 의 함수패턴을 
    그대로 사용할수 있도록 해놓은 함수 preg_match, preg_split, preg_quote 등의 함수 
    를 사용한다.


    예) 사과라는 문자열을 배라는 문자열로 치환한다. 
      $string ="이것은 사과 입니다"; 
      ereg_replace("사과","배",$string); 

    ① ^ 와 $ 의 사용의 예 
     ^ 는 문자열이 바로 뒤따라나오는 문자열로 시작 됨을 가리킨다. 
     예) ^The → The로 시작 하는 문자열
     $ 는 문자열의 맨 마지막을 가리킨다. 
     예) of despair$ → of despair 로 끝나는 문자열 

     예) ^abc$ → abc로 시작해 abc로 끝나는 경우 이므로 abc 만 해당

    ② ? . * + 의 사용법

     ? 는 직전의 선행문자 하나에 대응되며, 0~1 개를 의미함.

      예) "ab?" 는 a 또는 ab 를 나타낸다. 
     . 은 임의의 하나의 문자에 대응되며, 개를 의미함.  
      예) "x.z" 는 xyz, xxz, xbz 등이고 xz나 xyyz는 안된다. 
     * 는 직전의 선행문자 하나에 대응되며, 0~n 개를 의미함. 
      예) "ab*" 는 a, abc(b가 하나 포함되었으므로 정당), ab, abbbb 등을 말한다.

       * (선행문자가 없는 경우이므로 임의의 문자열 및 공백 문자열도 해당됨) 
       .* (선행문자가 "."이므로 하나 이상의 문자를 포함하는 문자열, 공백 문자열은 안됨) 
       ab* ('b'를 0번 또는 여러번 포함하므로 a, accc, abb, abbbbbbb 등) 
       a* ('a'를 0번 또는 여러번 포함하므로 k, kdd, sdfrrt, a, aaaa, abb, 공백문자열 등) 

     + 는 직전의 선행문자 하나에 대응되며, 1~n 개를 의미함. 
      예) "ab+" 는 abc, abbb 등이고 a는 되지 않는다. 

    ③ [], {} 와 () 그리고 | 

     '[]' 는 [] 안에 존재하는 문자들중 한 문자만을 나타낸다. 
      예) [abc] 는 a 또는 b 또는 c 중에 한문자를 나타낸다. 
       [ a-f ] 는 [abcdf] 와 같은 의미. ( '-'는 범위를 나타냄. )

       []내에서 ^ 이 선행되면 not을 나타냄 
       

       * 문자클래스 *    [:클래스이름:] 형식으로 사용
        alnum : 알파벳과 숫자 
        alpha : 알파벳

        lower : 소문자

        upper : 대문자

        digit : 10진수

        xdigit : 16진수, 0-9, a-f, A-F

        punct : 제어문자도 아니고, 알파벳,숫자도 아닌 문자(구두점 기호)
        blank : 스페이스나 탭 (시스템에 의존적임)

        space : 스페이스, 케리지 리턴, 뉴라인, 수직 탭, 폼피드 등 공백문자
        cntrl : 아스키코드에서의 127 이상의 문자와 32 이하의 제어문자 
           (한글의 첫째바이트가 127 이상이므로 제어문자로 취급됨)
        print : 아스키코드에서 32에서 126까지의 찍을 수 있는 문자 
        graph : 스페이스는 제외되고 나머지는 'print' 항목과 같음. 

        [[:alnum:]]은 [a-zA-Z0-9] 와 같은 의미다. 
        [[:alpha:]]은 [a-zA-Z] 와 같은 의미다. 
        문자열 오퍼레이터는 [] 사이에서만 효력을 발휘한다. 
        그리고 반대의 의미도 가능하다. 
        [^[:alnum:]] 은 알파벳과 숫자의 조합이 아닌것을 말한다. 
        [^a-zA-Z0-9] 와 같이 사용될수도 있다.


     '{}'는 {} 직전의 선행 문자의 개수를 정하는 것이다. 
      예) "ab{2}" 는 "abb"를 나타낸다. 즉 b의 개수가 2개를 나타낸다. 
       "ab{2 ,}" 는 abb, abbbbb 등 b의 개수가 2개 이상을 나타낸다. 
       "ab{3 5}" 는 abbb, abbbb, abbbbb 와 같이 b가 3개에서 5개 까지를 나타낸다. 

     '()' 는 ()안에 있는 글자들을 그룹화 한다. 
      예) a(bc)* 는 a, abc abcbc 등 'bc'가 없거나 하나 이상인 경우 
       a(bc) 는 abcbc 를 나타낸다. 

     '|' 는 OR 연산자 기능을 한다. 
      예) "a|b" 는 a 또는 b 둘중 하나를 나타낸다. 

      '\'  위에서 사용된 특수 문자들을 정규식내에서 문자 취급하고 싶을 때
      예) filename\.ext → "filename.ext"를 나타냄
       [\?\[\\\]] ('?', '[', '\', ']' 중 하나) 


    ⑤ 기초 활용 

      ^[1-9][0-9]*$ 는 자연수 
      ^(0|[1-9][0-9]*)$ 는 0을 포함하는 자연수 
      ^(0|-?[1-9][0-9]*)$ 정수
      ^[0-9]+(.[0-9]+)?$ 소숫점 표시 
      ^[0-9]+(.[0-9])?$ 소수점 둘째자리 까지 
      ^[0-9]+(.[0-9]{1,2})?$ 소수점 둘째자리나 첫째자리 
      ^[0-9]{1,3}(,[0-9])*(.[0-9]{1,2})?$ 돈의 표시

    ⑥ 복합활용 

      # 메일 주소 체킹 (유저명@도메인명)

       유저명 : 대문자, 소문자, 숫자 그리고 '.' '-' '_' 을 가질 수있지만 . 로 시작하면 안된다. 
           [_0-9a-zA-Z-]+(.[_0-9a-zA-Z]+)* ereg 사용할때(case insensitive)
           ^[_a-z0-9-]+(.[_a-z0-9-]+)*$ eregi 사용할때(case sensitive)

       도메인 : 유저명과 기본적으로는 같지만 _ 가 없다. 
           ^[a-z0-9-]+(.[a-z0-9-]+)*$ 

       조합 결과 : ^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*$ 

      # URL 에 http:// 붙여주기 

       URL 은 대문자, 소문자, 숫자 ,'.','_','=','&','?','~','@','/','+' 를 사용 할수 있다 
       즉, http://([0-9a-zA-Z./@~?&=_]+) 가 된다. 

       $add="www.codelib.co.kr"; 
       $pattern ="([0-9a-zA-Z./@~?&=_]+)"; 
       $link =ereg_replace($pattern, "http://1" $add); 
       echo ("$link"); 

       의 결과 $link 는 다음처럼 변경 된다. http://www.codelib.co.kr
       참고로 1 은 첫번째 괄호안의 값을 말한다. 2는 2번째..

    '플밍 > PHP+MySQL' 카테고리의 다른 글

    php5 에서 cal_days_in_month 작동 안될때  (0) 2011.08.29
    # Comparison Operators  (0) 2011.08.29
    ch4. 문자열 조작과 정규표현  (0) 2011.08.29
    ch3. 배열 사용  (0) 2011.08.29
    ch2. 데이터 저장과 불러오기  (0) 2011.08.29
Designed by Tistory.