1. PHP 정규표현식 ☞ 정규표현식 참조
ㅇ 지원 종류
- Perl 호환의 정규표현식 지원 (PCRE) : `preg`
- 멀티바이트 mbstring 정규표현식 지원 : `mb_ereg`
- POSIX 확장 형식 지원 (쓰기 쉬우나, 기능 빈약,취약성 때문에 5.3 버전 이후 지원 중단)
ㅇ 정규 표현식 구분자 : 정규 표현식은 반드시 슬래시(/)로 감싸짐
- 대부분 다른 언어에서도, 2개의 슬래시(/) 사이에 `문자열 패턴 식(정규표현식)`을 줌
2. 패턴 기호 ☞ 정규표현 메타 문자 참조
ㅇ 단일 문자
- . : 임의 한 문자 (줄바꿈 문자를 제외한 모든 단일 문자)
ㅇ 반복성
- ? : 0 또는 1회 만 매치 (아예 없거나 1회 만 나타남, 최대 1회)
- * : 최소 0회 이상 반복 매치
- + : 최소 1회 이상 반복 매치
- {n} : n회 반복 매치
- {n,m} : n회 이상 m회 이하 반복 매치
- {n,} : 적어도 n회 이상 반복 매치
ㅇ 위치 지정
- ^ : 문자열의 시작
- $ : 문자열의 끝
ㅇ 문자 클래스
- [0-9] 또는 d : 모든 숫자
- [^0-9] 또는 D : 숫자가 아닌 모든 문자
ㅇ 선택(or)
- |
3. 패턴 수식자
ㅇ 패턴 구분 문자인 슬래시(/) 뒤에서 지정
- i : 대소문자 구분 안함
- m : 줄 단위 매칭
- s : `.`을 줄바꿈 문자에도 매칭
- u : 정규표현식(패턴 문자열)을 UTF-8 인코딩으로 취급
- x : 이스케이프 또는 문자 클래스 내부를 제외하고, 패턴의 공백문자를 무시
4. 정규표현식 내 특수문자 이스케이프
ㅇ 특수문자 : `.`, `,`, `?`, `*`, `+`, `^`, `$`, `[`, `]`, `(`, `)`
ㅇ 이스케이프 처리 : 특수문자 앞에 역슬래시 `\`를 붙임
ㅇ 만일, 단일 역슬래시와의 매치하려면, 역슬래시를 4번 씀(`\\\\`)
ㅇ 특수 문자 이스케이프 전용 함수 : preg_quote()
5. 정규표현식 관련 PHP 함수
ㅇ preg_match(pattern, subject) : 최초 매치에서 멈춤
- 패턴에 맞는 문자가 있으면 true 반환
ㅇ preg_match_all(pattern, subject) : 모든 매치를 찾음
ㅇ preg_replace(pattern, replacement, subject) : 매치 교체
- 例) preg_replace("/[^a-zA-Z0-9_\.]/","",string); // 영문자,_,숫자 이외 모든 문자 제거
6. [참고웹사이트]
ㅇ 이 세상에 하나는 남기고 가자 (PHP 정규식 PCRE의 모든 것)
ㅇ (...)