정규식에 관한건 Visual Basic 캬테고리에도 하나 있음을 참고 하세요 정규식은 모든 언어에서.. 개발되고 있으며 리눅스에서도 활용할 수 있으므로 꼭 알아두도록 합시다 ◐ 정규 표현식의 규칙
문자열 패턴을 표한하기 위해 정규 표현식과 함께 사용되는 특수문자들이 있다.
정규 표현식에 사용되는 이 특수문자들의 사용법을 먼저 알아보도록 하자.
☞ 패턴 표현에 사용되는 특수문자
1. '.' 특수 문자
'.'은 어떤 문자이건 간에 임의의 한 글자를 나타낸다.
예를 들면, 패턴 a.c는 어느 한문자의 앞 문자가 a이고 뒷 문자는 c인
모든 문자열을 포함한다.
따라서 aac나 abc, acc는 이 패턴에 일치되는 문자열이다.
그러나 '.'은 반드시 임의의 한 글자만을 대신하기 때문에 a로 시작해 c로 끝나는
문자열 중 두 글자뿐인 ac나 abbc등은 이 패턴에 포함되지 않는다.
사용예 |
내 용 |
해당 문자열 |
s.e |
s와 e사이에 임의의 한 글자를 갖는 문자열과 일치한다. |
sae, sbe, sce, sde… |
.ce |
ce앞에 임의의 한 글자를 갖는 문자열과 일치한다. |
ace, kce, ffce… |
2. '*' 특수 문자
'*'는 바로 앞의 문자를 의미하며 그 문자가 없거나 하나 이상임을 나타낸다.
위의 '.'이 그 자체로 임의의 한 글자만을 의미하는데 반해 '*'는
바로 복수개의 문자를 나타낼 수 있다.
대신 '*' 앞에는 반드시 문자가 하나 이상 있어야 한다.
만일 "*e"와 같이 '*' 앞에 문자가 없으면 잘못된 패턴으로 인식해 에러가 발생한다.
사용예 |
내 용 |
해당 문자열 |
s*e |
e앞에 s가 없거나 하나 이상 존재하는
모든 문자열을 나타낸다. |
e, se, sse, ssee… |
abc* |
ac다음에 c가 없거나 하나 이상 존재하는
모든 문자열을 나타낸다. |
ab, abc, abcc, abccc… |
h*im |
im앞에 h가 없거나 하나 이상 존재하는
모든 문자열을 나타낸다. |
im, him, hhim, hhhim… |
6. '$' 특수 문자
사용예 |
내 용 |
해당 문자열 |
a?bc$ |
bc로 끝나는 문자열 앞에 문자 a가 없거나
하나 존재하는 문자열과 일치한다. |
eeabc, seebc, bc… |
t.e$ |
t와 임의의 한 글자, 그리고 그 다음에 e로
연결되어 끝나는 문자열과 일치한다. |
onthetoe, bctae, appetitle… |
s?e+$ |
첫 글자는 s나 e로 시작하고 하나 이상의
e로 끝나는 문자열과 일치한다. |
e, se, ee, eee, see, seee… |
^the$ |
the로 시작해서 the로 끝나는 문자열과
일치한다.
즉, 이 경우는 문자열 자체가 the뿐인
경우에만 일치한다. |
the… |
7. '[]' 특수 문자
각 괄호 []는 []안에 있는 문자열중에서 하나의 문자만을 의미한다.
[]안에서 범위를 지정할 때에는 '-' 문자를 사용한다. 즉, [a-d]는 [abcd]와 동일하며
[0-9]는 [0123456789]와 같은 의미이다.
사용예 |
내 용 |
해당 문자열 |
[ab]cd |
acd또는 bcd를 포함하는
문자열과 일치한다. |
acd, tacde, "bcd", "tbcde"… |
^[ab]cd |
acd또는 bcd로 시작하는
문자열과 일치한다. |
acds, bcdt, acdsee32… |
[a-z] |
영문 소문자나 대문자 한 글자를
포함하는 문자열과 일치한다. |
a02c2ds, ta123code, Student… |
[a-z][A-Z] |
영문 소문자나 대문자 한 글자를
포함하는 문자열과 일치한다. |
LINUX, 386AT… |
[0-9] |
십진수 한자를 포함하는
문자열과 일치한다. |
a02cds, ta123cde, 386… |
ga[a-z] |
하나의 영문 소문자 앞에 ga를 갖는
문자열과 일치한다. |
LINgazUX, gazzett… |
^ab[cd]ef |
abcef또는 abdef로 시작하는
문자열과 일치한다. |
abcef0z, abdef386… |
^[a-zA-Z] |
영문소문자 한자 이상을 갖는
문자열과 일치한다. |
LINgazUX, abcdef0z… |
[a-z]+ |
ab, aB, Ab, AB를 포함하는
문자열과 일치한다. |
tgabcabcef, MySQL… |
[aB][bB] |
ab, aB, Ab, AB를 포함하는
문자열과 일치한다. |
386ABIT, abcef0z, tgabcabcef… |
,[a-zA-Z0-9]$ |
콤마와 하나의 영문자 또는 숫자로
끝나는 문자열과 일치한다. |
abdef38,6, 199,2… |
만일 원하지 않는 문자를 제외한 나머지 문자를 가리킬 때에는
[]안의 첫 문자로 '^'를 사용한다.
사용예 |
내 용 |
해당 문자열 |
[^ab]cd |
acd와 bcd를 제외하고는 패턴 .cd와 같다.
즉 cd앞에 a나 b를 제외한 하나의 문자를
포함하는 문자열과 일치한다. |
ccd, scd, 018cd,
tgcdcdabcef, gazcd18… |
s[^ab]t |
sat와 sbt를 제외하고는 패턴 s.t와 같다.
즉 t앞에 a나 b를 제외한 임의의 한문자와
그앞에 s가 있는 문자열과 일치한다. |
sct, sdt, tgcdsctda28
settle… |
[^a-z] |
영문 소문자를 제외한 한글자를 포함한
문자열과 일치한다. |
MySQL, 386sAB, IT,
abcef0z, 199,2… |
[^a-zA-Z] |
영문자를 제외한 한글자를 포함하는
문자열과 일치한다. |
386sAB,IT, gazscd18,
abcef0z, 199,2… |
[^0-9] |
숫자를 제외한 한글자를 포함하는
문자열과 일치한다. |
settle, gazscd18,
LINUX… |
8. '{}' 특수 문자
사용예 |
내 용 |
해당 문자열 |
a{2}b |
aab를 가진 문자열과 일치한다. 즉 {2}는 {}앞에
있는 문자 a의 개수가 2개임을 의미한다. |
aab |
a{2,}b |
a의 개수가 최소한 2개 이상인 문자열을 포함하는
문자열과 일치한다. |
aab, aaab, aaaab… |
a{1,3}b |
b앞에 1개부터 3개까지의 a를 갖는 문자열을
포함하는 문자열을 문자열과 일치한다. |
ab, aab, aaaab… |
결국 앞에서 사용한 패턴 '*'는 중괄호로 표현하면 {0,}과 같은 의미이고
'+'는 {1,}과 '?'는 {0,1}과 각각 같은 의미임을 알 수 있다.
10. '|' 특수 문자
사용예 |
내 용 |
해당 문자열 |
he|she |
he나 she를 포함하는 문자열과 일치한다. |
he is hansome, she's gone… |
(he|she)is |
is앞에 he나 she를 포함하는 문자열,
즉 heis나 sheis를 포함하는
모든 문자열과 일치한다. |
|
(le|li)*ft |
ft앞에 le나 li가 없거나 하나 이상인
문자열과 일치한다. |
mlefto, lft, lelift,
fclelelilefte… |
mo(no)+ |
mo뒤에 no가 하나 이상인 문자열과 일치한다. |
mono, monono, mononono,
acmonoe… |
☞ 문자 클래스 (character class)
패턴을 [a-z]나 [A-Z], [0-9]로 표현하는 대신 다음과 같이 문자 클래스 (character class)로
간단하게 표현할 수도 있다.
- [[:alnum:]] : 알파벳 문자나 숫자중 하나를 의미하며 [a-zA-Z0-9]와 동일한 표현이다.
- [[:alpha:]] : 알파벳 문자중 하나를 의미하며 [a-zA-Z], 또는 [a-Z]와 동일한 표현이다.
- [[:graph:]] : 공백 문자를 제외한 화면에 출력 가능한 문자
- [[:space:]] : white space 문자 (예 : 공백문자, 탭('\t'), newline('\n'), carriage)
return('r') 등의 문자
- [[:blank:]] : 공백 문자 또는 탭
- [[:lower:]] : 소문자를 의미하며 [a-z]와 동일한 표현이다.
- [[:upper:]] : 대문자를 의미하며 [A-Z]와 동일한 표현이다.
- [[:cntrl:]] : 컨트롤 문자
- [[:digit:]] : 숫자 한자를 의미하며 [0-9]와 동일한 표현이다.
- [[:xdigit:]] : 16진수에 쓰이는 문자를 의미하며 [0-9|A|B|C|D|E|F]와 동일한 표현이다.
|