on
정규 표현식(regular expression)
정규 표현식(regular expression)
PHP에서는 두 가지의 정규 표현식을 지원한다.
1. POSIX
2. PCRE(Perl-Compatible Regular Expression)
POSIX 정규 표현식은 쉽고 실행 속도가 빠르지만, PCRE 정규 표현식은 POSIX 정규 표현식을 확장하여 더 강력하고 유연하게 동작한다.
■정규 표현식 리터럴
/검색패턴/플래그
정규 표현식 리터럴은 슬래시(/) 기호로 시작하여, 슬래시(/) 기호로 끝난다.
■preg_match() 함수
preg_match() : 해당 문자열에서 전달받은 정규 표현식과 일치하는 패턴을 검색한다.
preg_match($pattern, %subject[,$matches]);
첫 번째 인수로 받은 정규 표현식에 해당하는 패턴을 두 번째 인수로 전달받은 문자열에서 검색한다. 결과는 배열로 반환되며, 세 번째 인수로 반환값이 저장될 배열을 직접 전달할 수도 있다.
정규 표현식에 해당하는 패턴이 검색되면, 더는 검색하지 않고 검색을 중단한다. 이 함수는 패턴이 존재하면 1을 반환하고, 존재하지 않으면 0을 반환한다.
■단순한 패턴 검색
$subject = "간장 공장 공장장은 강 공장장이고, 된장 공장 공장장은 장 공장장이다."; if (preg_match('/공장/', $subject)) { echo "해당 문자열에서 '공장'을 발견했습니다."; } else { echo "해당 문자열에서 '공장'을 발견하지 못했습니다."; } if (preg_match('/장공/', $subject)) { echo "해당 문자열에서 '장공'을 발견했습니다."; } else { echo "해당 문자열에서 '장공'을 발견하지 못했습니다."; }
■플래그(flags)
i : 검색 패턴을 비교할 때 대소문자를 구분하지 않도록 설정한다.
g : 검색 패턴을 비교할 때 일치하는 모든 부분을 선택하도록 설정한다.
m : 검색 패턴을 비교할 때 여러 줄의 입력 문자열을 그 상태 그대로 여러줄로 비교하도록 설정한다.
y : 대상 문자열의 현재 위치부터 비교를 시작하도록 설정한다.
u : 대상 문자열이 UTF-8로 인코딩된 것으로 설정한다.
$subject = "bcabcAB"; // 기본 설정으로 검색 패턴을 비교할 때 대소문자를 구분함. preg_match_all('/AB/', $subject, $matches_01); // "AB" // 검색 패턴을 비교할 때 대소문자를 구분하지 않도록 설정함. preg_match_all('/AB/i', $subject, $matches_02); // "ab", "AB"
from http://woong971.tistory.com/28 by ccl(A) rewrite - 2021-10-25 13:00:42