정규표현식

Language/PHP 2010. 7. 27. 09:19

 

PHP는 POSIX와 Perl이라는 두 가지 스타일 정규표현식을 지원한다.(POSIX가 기본)

POSIX가 배우기 쉽고 빠르지만 이진적으로 안전하지 않다고 한다.

POSIX를 기준으로 정리 들어가 보자.

 

1. 문자집합과 클래스

  '.'문자 : 줄바꿈문자(\n)를 제외한 모든문자를 대신할 수 있다.

    ex) .at     // cat, sat, mat 등과 같은 셈

 

  문자클래스([]) : []안의 문자들을 문자클래스라 한다.

    ex) [aeiou] //모든 모음(aeiou중의 한글자)이라는 의미

 

  범위 표현(-) : 범위를 사용하기 위한것으로 문자사이에 '-'를 사용

    ex) [a-zA-Z]  // 모든 대소문자 중의 한글자

 

  제외(^) : []안에서 쓰일 때 'not'의 뜻으로 제외하고자 할때 사용

    ex) [^a-z] // 소문자를 제외

          ^[a-z] // 소문자로 시작하는 것을 가리킴

 

  문자클래스

    - [[:alnum:]] : 알파벳 문자, 숫자

    - [[:alpha:]] : 알파벳 문자

    - [[:lower:]] : 소문자

    - [[:upper:]] : 대문자

    - [[:digit:]] : 십진법의 숫자

    - [[:xdigit:]] : 16진법의 숫자, 문자

    - [[:punct:]] : 구두점

    - [[:blank:]] : 탭, 스페이스

    - [[:space:]] : 공백 문자들

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

    - [[:print:]] : 모든 출력 가능한 문자들

    - [[:graph:]] : 스페이스를 제외한 모든 출력 가능 문자

 

  반복

    '+' : 앞글자가 한번이상 반복될 수 있음을 뜻한다.

    '*' : 앞글자가 0번이상 반복될 수 있음을 뜻한다.

 

  부분표현식

    () : ()안의 모든 것을 나타낸다.

    ex) (very )*large //'large', 'very large', 'very very large'...등과 일치

 

  반복의 횟수 제한하기

    {} : {}안에 숫자를 넣어서 반복횟수 제한,

    ex) (very){3} //3번 반복

          (very){2,4} // 2~4번 사이로 반복

          (very){2, } // 적어도 2번이상 반복

 

  문자열의 시작과 끝 고정하기

   '^' : 시작부분에 사용되며, 문자열 앞부분에 이 표현이 있어야 함을 의미

    ex) ^bob // bob로 시작하는 문자열과 일치

    '$' : 뒷부분에 사용되고, 이표현으로 문자열이 끝나야 함을 의미

    ex) com$ //com으로 끝나는 문자열과 일치

           ^[a-z]$ // a-z까지의 모든글자(글자 하나)와 일치

 

  특수문자 사용

    ',', '{', '$'등의 특수문자를 사용할때에는 이스케이프 문자(역슬래시)를 사용하면 된다.

    ex) \, or \{ or \$  // , { $ 문자의 사용

 

  선택하기

    '|' : 여러 문자열중 선택하기 위해

    ex) com | edu | net // com이나 edu또는 net과 일치하는 문자열

    //--- split()를 이용한 이메일 분리 ---//

    $address = 'username@mail.com';

    $arr = split('\. | @', $address);

    while( list($key, $value) = each($arr) ) {

      echo $value;

    }

 

2. ereg() 함수 - 문자열중에 찾는값이 있으면 true를 반환 아니면 false를 반환한다.

  > ereg("찾는값", "문자열", array [matches])

  3번째 인자를 사용할 경우에는 값을 찾아낸 문자열을 [matches]에 저장한다.

  // 근데 배열저장값이 찾는값하고 왜 동일하지..? 난 문자열이 나오는걸 기대했었다...

 

3. eregi() 함수 - ereg와 같으나 대소문자를 구분한다.

  > eregi("찾는값", "문자열", array [matches])

 

4. ereg_replace() 함수 - 문자열중 찾는값이 나오면 치환값으로 치환한다.

  > ereg_replace("찾는값", "치환값", "문자열")

 

5. eregi_replace() 함수 - ereg_replace와 같으나 대소문자를 구분한다.

  > eregi_replace("찾는값", "치환값", "문자열")

'Language > PHP' 카테고리의 다른 글

php.ini Session 옵션  (0) 2010.08.02
Warning: main(): URL file-access is disabled in the server  (0) 2010.08.01
strtotime()  (0) 2010.07.26
php xml parser  (0) 2010.07.21
자바스크립트 변수를 php변수로 넘기기  (0) 2010.07.20
: