BLOG ESPERANCA

php의 정규 표현식 (정규식) 본문

Program/PHP

php의 정규 표현식 (정규식)

yobuce 2013. 1. 24. 19:47

< 정규 표현식 >

● .

.

임의의 한 문자. 줄바꿈 문자(/n)를 제외한 모든 문자를 대신할 수 있음

예시

.at // cat, hat, mat ...

 

● 반복

+

앞 글자가 한번 이상 반복될 수 있음

예시

(very )+nice = very nice, very very nice

*

앞 글자가 0번 이상 반복될 수 있음

예시

(very )*nice = nice, very nice, very very nice

 

● ?

?

없거나 하나인 문자. 하위 표현식을 옵션으로 취급한다.

예시

ca?t = ct, cat, abcatd

 

● -

-

범위를 사용하기 위한 것으로 문자 사이에 ‘-’를 사용

예시

[a-zA-Z] // 모든 대소문자 중의 한글자

 

● ^

^

[]안에서 사용할 때, ‘not’의 의미로, 제외하고자할 때 사용.

예시

[^a-z] // 소문자 제외

cf)^[a-z] // 소문자로 시작

 

● 문자열의 시작과 끝 고정하기

^

시작부분에 사용되며, 문자열 앞부분에 이 표현이 있어야 함

예시

^bob // bob으로 시작하는 문자열과 일치

$

뒷부분에 사용되며, 이 표현으로 문자열이 끝나야 함

예시

com$ // com으로 끝나는 문자열과 일치

^[a-z]$ // a-z까지의 모든 글자와 일치

 

● []

[]

[]안의 문자들을 문자 클래스라 한다, 포함

예시

[aeiou] // a 또는 e 또는 i 또는 o 또는 u를 포함하는 정보

 

 

● {}

{}

{}안에 숫자를 넣어서 반복 횟수 제한

예시

(very){3} // 3번 반복

(very){2, 4} // 2~4번 사이로 반복

(very){2, } // 적어도 2번 이상 반복

(very ){2,4} = very very, very very very, very very very very

 

● ()

()

패턴의 시작과 끝

예시

(very)*large // 'large', 'very large', 'very very large' ...

co(m){2}on // common

 

● |

|

or, 여러 문자열 중 선택

예시

com | edu | net // com이나 edu또는 net과 일치하는 문자열

 

● 문자클래스

[[:alnum:]] : 알파벳 문자, 숫자

[[:alpha:]] : 알파벳 문자

[[:lower:]] : 소문자

[[:upper:]] : 대문자

[[:digit:]] : 10진법 숫자

[[:xdigit:]] : 16진법 숫자, 문자

[[:punct:]] : 구두점

[[:blank:]] : 탭, 스페이스

[[:space:]] : 공백 문자

[[:cntrl:]] : 컨트롤 문자

[[:print:]] : 모든 출력 가능한 문자

[[:graph:]] : 스페이스를 제외한 모든 출력 가능 문자

 

● ereg(), eregi() (이 함수는 PHP 5.3.0부터 배제됨)

ereg()

문자열 중에 찾는 값이 있으면, true를 반환. 아니면 false를 반환

예제

<?php

if (ereg ("([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})", $date, $regs)) {

echo "$regs[3].$regs[2].$regs[1]";

} else {

echo "Invalid date format: $date";

}

?>

결과

Invalid date format:

eregi()

〃, 대소문자를 구분

예제

<?php

$string = 'XYZ';

if (eregi('z', $string)) {

echo "'$string' contains a 'z' or 'Z'!";

}

?>

 

결과

'XYZ' contains a 'z' or 'Z'!

 

● ereg_replace(), eregi_replace()

ereg_replace()

문자열 중 찾는 값이 나오면 치환값으로 치환

예제

<?php

$string = "This is a test";

echo str_replace(" is", " was", $string);

echo ereg_replace("( )is", "\\1was", $string);

echo ereg_replace("(( )is)", "\\2was", $string);

?>

결과

This was a testThis was a testThis was a test

eregi_replace()

〃, 대소문자를 구분

예제

<?

$text = "\"c:\\aaaa\\bbbb\\ccc\\";

$home=eregi_replace('\"[a-zA-Z]:[\]|[\]','/', $text);

echo "원래문자열 : {$text} <br>";

echo "바뀐문자열 : {$home}";

?>

결과

원래문자열 : "c:\aaaa\bbbb\ccc\ 
바뀐문자열 : /aaaa/bbbb/ccc/