PHP 매뉴얼
이전 |  | 다음

# XCI. 정규표현식 함수 (펄-호환)

# 소개

이 함수들에서 사용되는 패턴 문법은 펄에 가깝습니다. 표현식은 구분자로 감싸주어야 합니다. 예를 들면, 슬래쉬(/)로 감싸줍니다. 영문자와 숫자, 백슬래쉬(\)를 제외한 어떠한 문자라도 구분자로 사용할 수 있습니다. 구분자가 표현식 안에서 사용될 경우, 백슬래쉬로 이스케이프해야합니다. PHP 4.0.4부터, 펄 형식의 (), {}, [], <> 매칭 구분자를 사용할 수 있습니다. 자세한 설명은 패턴 문법을 참고하십시오.

종료 구분자 뒤에는 매칭에 영향을 주는 여러가지 변경자(midifier)를 쓸 수 있습니다. 패턴 변경자를 참고하십시오.

PHP는 POSIX 확장 정규표현식 함수로 POSIX 확장 문법을 사용하는 정규표현식을 지원합니다.

주의
PCRE의 몇몇 제한에 주의를 해야합니다. 자세한 정보는 http://www.pcre.org/pcre.txt을 참고하십시오.

# 요구 사항

정규표현식 지원은 Philip Hazel이 작성한 PCRE 라이브러리 패키지에 의해 제공됩니다. 저작권은 University of Cambridge, England에 있습니다. ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/에 존재합니다.

# 설치

PHP 4.2.0부터 이 함수들은 기본값으로 사용 가능합니다. `--without-pcre-regex`로 PCRE 함수를 사용하지 않을 수 있습니다. 번들된 라이브러리를 사용하지 않는다면, `--with-pcre-regex=DIR`을 이용하여 PCRE의 인크루드와 라이브러리 파일이 있는 특정한 디렉토리를 지정하십시오. 이전 버전에서는 이 함수들을 사용하기 위해서는 PHP를 `--with-pcre-regex[=DIR]`를 주어서 설정하고 컴파일해야합니다.

`PHP` 윈도우 버전에서는 이 확장 모듈에 대한 지원이 포함되어 있습니다. 이 함수들을 이용하기 위해서 추가로 확장 모듈을 읽어들일 필요가 없습니다.

# 런타임 설정

이 확장 모듈은 `php.ini` 설정이 존재하지 않습니다.

# 리소스 종류

이 확장 모듈은 리소스형을 정의하지 않습니다.

# 상수 정의

이 확장 모듈은 다음의 상수를 정의합니다. 이는 확장 모듈을 PHP에 내장했거나, 실행시에 동적으로 읽어들일 경우에만 사용할 수 있습니다.

표 1. PREG 상수

상수 | 설명
--- | ---
PREG_PATTERN_ORDER | $matches[0] 배열은 패턴 전체를 가지고, $matches[1] 배열이 처음 괄호에 들은 서브패턴의 문자열을 가지도록 결과를 지정합니다. 이 플래그는 preg_match_all()에서만 사용합니다.
PREG_SET_ORDER | $matches[0] 배열은 매치된 첫번째 집합을 가지고, $matches[1]는 두번째 집합을 가지도록 결과를 지정합니다. 이 플래그는 preg_match_all()에서만 사용합니다.
PREG_OFFSET_CAPTURE | `PREG_SPLIT_OFFSET_CAPTURE`의 설명을 보십시오. 이 플래그는 `PHP` 4.3.0부터 사용할 수 있습니다.
PREG_SPLIT_NO_EMPTY | 이 플래그는 preg_split()가 비어있지 않은 조각만을 반환하게 합니다.
PREG_SPLIT_DELIM_CAPTURE | 이 플래그는 preg_split()가 구분자 안의 괄호로 둘러싸인 표현식도 잡아내게 합니다. `PHP` 4.0.5부터 사용할 수 있습니다.
PREG_SPLIT_OFFSET_CAPTURE | 이 플래그를 설정하면, 매치하는 모든 문자열 요소의 시작 위치를 함께 반환합니다. 매치된 문자열을 `0`으로, 문자열 시작 위치를 `1`로 가지는 배열을 원소로 가지는 배열을 반환합니다. 이 플래그는 PHP 4.3.0부터 사용할 수 있고, preg_split()에서만 사용합니다.

# 예제

예 1. 유효한 패턴 예제

- `/<\/\w+>/`

- `|(\d{3})-\d+|Sm`

- `/^(?i)php[34]/`

- `{^\s+(\s+)?$}`

예 2. 유효하지 않은 패턴 예제

- `/href='(.*)'` - 종료 구분자가 없습니다

- `/\w+\s*\w+/J` - 알 수 없는 변경자 'J'

- `1-\d3-\d3-\d4|` - 시작 구분자가 없습니다

이전 | 처음으로 | 다음
recode | 위로 | 패턴 변경자