정규식(Regular Expression)이란 특별한 룰에 의해 정해진 문자의 조합을 사용해 검색하는 방법입니다.
정규식은 프로그램 언어에서 많이 사용되며 PHP에서도 사용 가능합니다.
PHP에서 사용 방법은 다음과 같습니다.
<?php
echo preg_match("/cat/", "I love my cat");
echo preg_match("/cat/", "I love my dog");
?>
정규 표현식 사용 방법
PHP에서는 preg_match 함수를 이용하여 정규식을 사용할 수 있습니다.
preg_match의 첫번째 인수는 검색 문자열이며, 두번째 인수는 검색 대상이 됩니다.
검색 대상에 검색 문자열이 존재하면 true를 반환, 존재하지 않으면 false를 반환합니다.
검색 문자열로 사용한 /cat/을 해석해보면 “I love my cat”에 검색 문자가 존재하는가? 라는 정규표현입니다.
첫번째 정규 표현에서는 “I love my cat”에 cat에 존재하기 때문에 true(1)를 반환하지만, “I love my dog”에는 검새 문자열이 존재 하지 않기 때문에 false(0)를 반환합니다.
자주 사용되는 정규식 표현
기호 | 내용 | 샘플 |
---|---|---|
^ | 맨 앞에 매칭 | 예) ^hello ⇒맨 앞에 hello 문자열이 있으면 패턴 매칭. |
$ | 맨 뒤에매칭 | 예) hello$ ⇒맨 뒤에hello 문자열이 있으면 패턴 매칭. |
. | 줄바꿈 이외의 임의의 문자 하나매칭 | 예) hello.world ⇒hello world 나 hello-world등의 문자열이 있으면 패턴 매칭. |
[] | 괄호 안에 지정한 문자중 하나의 문자 매칭 | 예) [abc] ⇒a, b、c 중 하나가 있으면 패턴 매칭.예) r[aeu]d ⇒rad, red、rud 중 하나가 있으면 패턴 매칭. |
[A-Z] | 영어 대문자 A-Z중 하나의 문자매칭 | 예) a[A-Z]c ⇒aAc,aBc,…,aZc 등의 문자열이 있으면 패턴 매칭. |
[a-z] | 영어 소문자 a-z중 하나의 문자매칭 | 예) a[a-z]c ⇒aac,abc,…,azc 등의 문자열이 있으면 패턴 매칭. |
[0-9] | 숫자 0-9중 하나의 문자매칭 | 예) a[0-9]c ⇒a0c,a1c,…,a9c 등의 문자열이 있으면 패턴 매칭. |
[^] | 괄호안에 지정한 문자가 포험되지 않은 하나의 문자매칭 | 예) [^abc] ⇒a、b、c 이외의 문자가 있으면 패턴 매칭. |
* | 앞에 작성한 표현을 0회 이상 반복 | 예)a、ab、abb、abbb 등의 패턴 매칭. |
+ | 앞에 작성한 표현을 1회 이상 반복 | 예)ab、abb、abbb 등의 문자열이 있으면 패턴 매칭. |
? | 앞에 작성한 표현을 0회 또는 1회 이상 반복 | 예) ab? ⇒a 나 ab가 있으면 패턴 매칭. |
{n} | 앞에 작성한 표현을 n회 반복 | 예) ab{2} ⇒abb 가 있으면 패턴 매칭. |
{n,} | 앞에 작성한 표현을 n회 이상 반복 | 예) ab{2,} ⇒abb、abbb 등이 있으면 패턴 매칭. |
{n,m} | 앞에 작성한 표현을 n회 부터 m회 까지 반복 | 예) ab{2,5} ⇒abb,abbb,abbbb,abbbbb이 있으면 패턴 매칭. |
a|b | a 또는 b에 매칭 | 예) hello|world ⇒hello 또는 world가 있으면 패턴 매칭. |
() | 그룹화. ()안에 작성한 패턴과 일치하는 문자열이 있으면 저장했다가 실행이 끝난후 참조 가능하게 함. | |
가-힣 | 한글 매칭 | 예) [가-힣] ⇒한글이 포함되어 있는 경우 매칭 |
문자 클래스 []
[]는 문자 클래스라고 하며 괄호안에 지정한 문자중 하나의 문자라도 매칭하는 패턴 결과를 얻고 싶을때 사용합니다.
예를 들어 [12]라고 정규식을 표현하는 경우에는 1 또는 2가 매칭됩니다.
샘플
[abcdefg]
샘플의 경우는 a,b,c,d,e,f,g 의 알파벳중 하나라도 매칭 되는 경우를 찾을때 사용됩니다.
일괄 표현
[]안에서 -을 사용하여 범위를 지정할 수 있습니다.
예를 들어 [1-5]라고 작성하면 1,2,3,4,5에 매칭 하는 경우를 지정할 수 있습니다.
샘플
[0-9]
0,1,2,3,4,5,6,7,8,9 숫자를 의미
샘플
[a-zA-Z0-9]
영어 소문자 a부터 z까지, 영어 대문자 A부터 Z까지, 숫자 0부터 9까지 매칭되는 문자가 있는지 지정
포함 시키지 않는 경우
반대로 괄호안에 지정한 문자가 포함되지 않은 경우를 지정 하고 싶을때에는 ^를 사용합니다.
샘플
[^0-9]
숫자 이외의 문자가 포함되어 있는지 지정
댓글