1. 테스트 스크립트 작성 2. 간단한 패턴 정의하기 3. 수량자 사용하기 4. 문자 클래스 사용하기 5. 전체 매치하기 6. 변경자의 사용 7. 패턴 매치와 치환
정규표현식 ◦ 특정 문제를 해결하기 위한 일종의 도구 특정 문제의 예 1) 대소문자 구분 없이 car 라는 텍스트가 포함된 파일을 찾는데, 단어 중간에 car 가 들 어있는 경우는 제외해야 됨 2) 웹 페이지를 동적으로 생성하고 있는데 DB 의 텍스트를 웹 상에 출력하고자 하며, 해 당 텍스트가 URL 형식일 경우 를 이용하여 해당 텍스트를 클릭할 수 있 도록 해야 함 3) 회원 가입 폼의 이메일 주소 입력 칸에 이메일 주소를 형식에 맞게 넣었는지 확인해 야 함 4) size 라는 글자를 iSize 라고 치환하고 싶은데 해당 단어가 문장 처음에 나오는 것만 치환해야 함 매우 독특한 프로그래밍 과제들 ◦ 찾고자 하는 텍스트가 매우 가변적일 때 사용 ◦ 패턴을 작성하고 특정 값을 해당 패턴에 적용시켜서 사용
패턴 적용을 위한 preg_match() 함수 ◦ 특정한 패턴이 문자열과 매치가 되느냐에 따라 0 혹은 1 을 반환 ◦ 첫 번째 매치가 발생하면 실행 중단 ◦ 모든 매치를 찾으려면 preg_match_all() 함수 사용 ◦ 패턴 적용시 인용부호 사용 작은 따옴표 사용 권장 ( 큰 따옴표 안의 문자는 특별한 의미를 가질 수 있음 ) ◦ 패턴을 구분자 안에 넣어서 사용 영문, 숫자, 역슬래쉬 제외한 다른 문자 사용 가능 preg_match(pattern, subject);
Script 패턴과 문자열을 입력받아 결과를 반환하는 스크립트
리터럴 (literal) ◦ 문자 그대로의 값을 의미 메타 문자 ◦ 리터럴 문자가 아닌 특별한 의미를 가지고 있는 기호 ◦ 메타 문자 리스트
메타 문자의 예 ◦. 은 개행 문자를 제외한 모든 단일 문자와 일치 ex) a, b, 2, 5.. 등등 ◦ ^ 은 문자열의 시작을 나타내며 ^ 뒤에 오는 문자로 시작되는 문자와 일치 ex) ^k : kid, korea 와 일치 / dark 와는 불일치 ◦ $ 는 문자열의 끝을 나타내며 ^ 뒤에 오는 문자로 끝나는 문자와 일치 ex) $s : Torres 와 일치 / Spain 과는 불일치 ◦ | 는 선택적인 의미로 | 의 앞, 뒤에 있는 문자들과 or 의 의미로 일치 ex) st|rea : abstract, Hargreaves 와 일치 스크립트 9.1 에서 생성한 pcre.php 로 테스트
수량자 ◦ 다수의 문자 출현을 의미하는 메타 문자 ex) a, aa, aaa, aaaa 와 같이 단어의 연속되는 문자와의 매치 ◦ 수량자 리스트 수량자의 예 ◦ ex) a{3} : aaa 와 일치 ◦ ex) a{3,} : aaa, aaaa, aaaaa… 와 일치 ◦ ex) colou?r : color, colour 와 일치
문자 클래스 ◦ 모든 숫자 / 문자와 매칭할 때 간편하게 사용 가능 리터럴만 사용한다면 패턴이 매우 길어짐 ◦ 문자 클래스 리스트 ◦ 대괄호 안에 문자를 써 넣는 방법으로 생성 ex) [aeiou] : 영어 모음과 일치
문자 클래스에서의 규칙 ◦ 메타 문자는 리터럴로 취급 리터럴로 취급되지 않는 예외 단어 4 개 \ : 이스케이프 ^ : 부정연산자 - : 범위 ] : 클래스 닫음 문자 클래스의 예 ◦ ^\d{5}& : 모든 다섯 자리의 숫자와 일치 ◦ can\s?not : can not 이나 cannot 과 일치
패턴이 어떻게 일치하는지 확인하기 ◦ $match 변수에 매치 결과가 저장됨 ◦ 모든 매치 결과를 저장하려면 preg_match_all() 함수를 사용 Greediness 매치 / Less greedy 매치 ◦ ex) 를 Link 와 매치할 경우 Greediness( 탐욕적 ) 매치 : 3 번 매치 까지 전체 구문 Less greedy( 덜 욕심내기 ) 매치 : 2 번 배치 까지 ◦ 가능한 많이 매치하는 방식 vs 가장 작은 데이터와 매치하는 방식 preg_match(pattern, subject, $match);
Script 13.2 – 매치되는 결과를 출력하는 스크립트
패턴 변경자 ◦ 패턴 구분기호 뒤에 위치하며 정규표현식의 행동을 변경 ◦ 패턴 변경자 리스트 ◦ 패턴 변경자의 예 ex) /for.*/I : for, FOR, For, foR 등과 매치
패턴을 검색하고 치환하기 ◦ count 인자를 통해서 치환이 일어날 횟수 지정 가능 ◦ 모든 cat 을 dog 으로 치환하는 예 ex) $str = preg_replace(‘/cat/’, ‘dog’, ‘I like my cat.’); preg_replace(pattern, replacement, subject[, count]);
Script 13.3 – 매치된 값을 다른 값으로 치환하는 스크립트
1. 2 페이지에 나와있는 특정 문제의 예 네 가지에 대한 정규표현식을 작성해보 자. 2. 영문 스포츠 뉴스에서 두 명의 선수 이름만을 모두 추출하는 정규식을 두 가 지 이상 작성해보자. ex) 축구 뉴스에서 ‘Messi’ 와 ‘Xavi’ 를 정규식을 이용하여 추출하기