- Post in | WebDevelop/PHP
- Post at | 2007. 11. 22. 17:37 | by 쥬리엘
정규식
‘.’ 메타 문자
‘.’ 메타 문자는 임의의 한 글자를 나타낸다.
예를 들어 a.b는 abc, adb 등을 나타낸다. 중요한 것은 '.' 메타 문자는 오직 임의의 한 글자를 나타낼 뿐이며 구문의 파싱은 앞부터 일어난다는 것이다. 예를 들어 “ab..”에 해당하는 문자열 중 abab라는 문자열은 앞의 ab에만 적용된다. 너무 추상적이니 예제를 통해 보다 확실히 이해하도록 하자.
사용예 |
설명 |
해당 문자열 |
a.b |
a 와 b 사이에 임의의 한 글자를 갖는 문자열 |
abb, apb, aqb |
ab. |
ab 뒤에 임의의 한 글자를 갖는 문자열 |
abc, abd |
ab.... |
ab 뒤에 임의의 네 글자를 갖는 문자열 |
abcdef, abbbbb, abcabc |
.ab |
ab 앞에 임의의 한 글자를 갖는 문자열 |
bab, cab, dab |
‘^’ 메타 문자
‘^’ 메타 문자는 ‘^’ 문자 바로 뒤에 오는 문자열과 비교 대상이 되는 문자열의 처음 부분을 비교하여 ‘^’ 문자 바로 뒤에 오는 문자열로 시작되는지 알아낸다.
사용예 |
설명 |
해당 문자열 |
^I love |
I love로 시작하는 문자열 |
I love PHP, I love porgramming. |
^.ove |
ove 앞에 임의의 한 글자로 시작하는 문자열 |
Love me plz |
‘$’ 메타 문자
‘$’ 메타 문자는 ‘$’ 문자 바로 전에 오는 문자열과 비교 대상이 되는 문자열의 끝 부분을 비교하여 ‘$’ 문바 바로 전에 오는 문자열로 끝나는가를 알아낸다.
사용예 |
설명 |
해당 문자열 |
PHP$ |
PHP로 끝나는 문자열 |
I love PHP, I hate PHP |
love PHP$ |
love PHP로 끝나는 문자열 |
We love PHP |
‘*’ 메타 문자
‘*’ 메타 문자를 도스와 유닉스의 ‘*’ 와 혼동하지 말기 바란다. 여기서는 그 쓰임새가 완전히 다르다.
‘*’ 메타 문자 앞에는 반드시 한 문자 이상의 문자열이 와야하는데 ‘*’ 앞에 있는 문자가 존재하지 않던가 혹은 하나 이상 존재하는 문자열을 의미한다. ‘.’ 문자가 오직 한 문자만을 다루는 것에 비해 ‘*’ 메타 문자는 복수의 문자를 다룰 수 있다.
예제를 보면서 확실히 이해하도록 하자.
사용예 |
설명 |
해당 문자열 |
a*c |
c 앞에 a가 없거나 혹은 하나 이상 존재하는 모든 문자열 |
c, ac, aac, aaac |
ab*c |
a는 반드시 있어야 하고 c 앞에 b가 없거나 혹은 하나 이상 존재하는 모든 문자열 |
ac, abc, abbc, abbbc |
abc* |
ab는 반드시 있어야 하고 c가 없거나 혹은 하나 이상 존재하는 모든 문자열 |
ab, abc, abcc, abccc |
a*bc |
bc앞에 a가 없거나 혹은 하나 이상 존재하는 모든 문자열 |
bc, abc, aabc, aaabc |
‘+’ 메타 문자
‘+’ 메타 문자 앞에는 반드시 한 문자 이상의 문자열이 와야하는데, ‘+’ 앞에 있는 문자가 하나 이상 존재하는 문자열을 의미한다. ‘+’ 메타 문자는 ‘*’ 메타 문자와 비슷하니 ‘*’ 메타 문자와 비교하여 설명한다.
“a*bc”는 bc 앞에 a가 없거나 혹은 하나 이상 존재하는 모든 문자열인 것에 비해 “a+bc”는 bc 앞에 a가 하나 이상 존재하는 모든 문자열이다.
사용예 |
설명 |
해당 문자열 |
a+c |
c 앞에 a가 하나 이상 존재하는 문자열 |
ac, aac, aaac
|
ab+c |
a는 반드시 있어야 하고 c 앞에 b가 하나 이상 존재하는 모든 문자열 |
abc, abbc, abbbc |
abc+ |
ab는 반드시 있어야 하고 c가 하나 이상 존재하는 모든 문자열 |
abc, abcc, abccc |
a+bc |
bc 앞에 a가 하나 이상 존재하는 모든 문자열 |
abc, aabc, aaabc |
‘?’ 메타 문자
‘?’ 메타 문자의 앞 문자가 없거나 하나임을 의미한다.
사용예 |
설명 |
해당 문자열 |
a?c |
c 앞에 a가 없거나 혹은 한 개 존재하는 모든 문자열 |
c, ac |
ab?c |
a는 반드시 있어야 하고 c 앞에 b가 없거나 혹은 한 개 존재하는 모든 문자열 |
ac, abc |
abc? |
ab는 반드시 있어야 하고 c가 없거나 혹은 한 개 존재하는 모든 문자열 |
ab, abc |
a?bc |
bc앞에 a가 없거나 혹은 한 개 존재하는 모든 문자열 |
bc, abc |
‘[’, ‘]’ 메타 문자
대괄호 안에 있는 문자들은 문자 한 개씩 취급하며 문자열이 아니다.
각각의 문자들은 괄호 앞 또는 뒤에 오는 문자열들과 병렬로 조합되어 나타내어진다. 문자의 범위를 정할 때는 ‘-‘ 문자를 사용한다. 특정한 문자를 제외한 모든 문자를 포함하고 싶다면 ‘^’ 문자를 사용한다.
사용예 |
설명 |
해당 문자열 |
[a]b |
b 앞에 a를 포함하는 모든 문자열 |
ab |
[ab]c |
c 앞에 a 또는 b를 포함하는 모든 문자열 |
ac, bc |
[a-d]e |
e 앞에 a 또는 b 또는 c 를 포함 하는 모든 문자열 |
ae, be, ce, de |
[ab][cd] |
c 앞에 a 또는 b를 포함하거나 d 앞에 a 또는 b를 포함하는 모든 문자열 |
ac, ad, bc, bd |
[^a]b |
b 앞에 a를 포함하지 않은 모든 문자열 |
bb, cb, db, eb |
[^ab]c |
c 앞에 a 또는 b 를 포함하지 않는 모든 문자열 |
dc, ec, fc, gc |
[^a-d]e |
e 앞에 a 또는 b 또는 c 또는 d를 포함하지 않는 모든 문자열 |
ee, fe, ge, he |
[^ab][^cd] |
c 혹은 d가 아닌 문자 앞에 a 또는 b가 아닌 모든 문자열 |
ee, fe, ca, db |
‘{’, ‘}’ 메타 문자
중괄호 안에는 임의의 숫자가 들어가는데 중괄호 앞에 있는 문자의 개수를 정의한다.
‘,’는 숫자의 범위를 지정한다.
사용예 |
설명 |
해당 문자열 |
a{0}b |
b앞에 a가 없는 문자열 |
b |
a{1}b |
b앞에 a가 한 개인 문자열 |
ab |
a{2}b |
b앞에 a가 두 개인 문자열 |
ab, aab |
a{1,3}b |
b앞에 a가 한 개 또는 두 개 또는 세 개인 문자열 |
ab, aab, aaab |
a{2,}b |
b앞에 a가 최소한 두 개 이상인 문자열 |
aab, aaab, aaaab |
‘(’,’)’ 메타 문자
괄호 안에 있는 문자들을 그룹화하여 한 문자처럼 취급한다.
사용예 |
설명 |
해당 문자열 |
(ab)c |
c 앞에 ab가 있는 문자열 |
abc |
(ab){2}c |
c 앞에 abab가 있는 문자열 |
abab |
[^(ab)]c |
c 앞에 ab가 없는 문자열 |
cc, ccc, bac, dbc |
‘|’ 메타 문자
‘|’ 메타 문자는 OR 연산을 한다.
사용예 |
설명 |
해당 문자열 |
I|love |
I나 love를 포함하는 문자열 |
I love you |
What( I| love) |
What 뒤에 ‘ I’ 나 ‘ love’를 포함하는 문자열 |
What I am? |
‘\’ 메타 문자
‘\’ 메타 문자는 메타 문자의 성질을 상실하게 한다. 메타 문자를 출력하기 위해 사용한다.
예를 들어 ‘\|’는 ‘|’, ‘\.’은 ‘.’을 나타낸다.
'WebDevelop > PHP' 카테고리의 다른 글
$_FILES의 활용.. (0) | 2007.11.23 |
---|---|
PHP5 새로운 함수 (0) | 2007.11.05 |
PHP5에서의 객체지향프로그래밍 (0) | 2007.11.02 |