본문 바로가기
유용한 정보/· ETC

정규식 표현

by 넷둥이파파 2012. 4. 4.

 

■ 정규식의 기초

정규식

설명

. 

단일 문자를 찾습니다. 

* 

a뒤에 0 개 이상의 b가 있는 항목을 찾습니다. 'ab*'는 "a", "abb" 등입니다.

+ 

a뒤에 하나 이상의 b가 있는 항목을 찾습니다. 'ab+'는 "ab", "abb" 등이지만 "a"는 아닙니다.

? 

a뒤에 b가 하나 있을 수도 있고 없을 수도 있는 항목을 찾습니다. "ab?"는 "ab" 또는 "a"를 찾습니다.

() 

괄호 안에 있는 콘텐츠를 항목으로 인식합니다. 

[] 

해당 목록에서 한 항목을 찾습니다. 

- 

목록에서 범위를 생성합니다. 

| 

x 또는 y를 찾습니다. 예를 들어, "z|food"는 "z" 또는 "food"를 찾습니다. "(z|f)ood"는 "zood" 또는 "food"를 찾습니다. 

^ 

입력 문자열의 시작 위치를 찾습니다. “^A” 는 문자열 시작 부분의 “A” 만 일치시킵니다.

^ 

왼쪽 대괄호 [ 바로 다음의 ^는 다른 의미입니다. 대괄호 식에서 사용될 때는 대괄호에 포함된 문자 집합을 제외한 문자열을 찾습니다. “[^0-9]” 는 대상 값이 숫자가 아니어야 한다는 의미입니다.

$ 

문자열의 끝에서 일치됩니다. “abc$” 는 문자열의 끝에 있을 경우에만 “abc” 를 매칭시킵니다.

\ 

위의 각 기능에서 벗어납니다(escape).  “\.” 은 . (쩜)을 의미합니다.
■ 우선순위
일단 정규식을 구성하면 산술식처럼 평가됩니다.
즉, 왼쪽에서 오른쪽으로 평가되고 우선 순위에 따라 이루어집니다.
아래 표는 다양한 정규식 연산자의 우선 순위를 가장 높은 것에서 가장 낮은 것까지 보여줍니다.

연산자

설명

\ 이스케이프
(), (?:), (?=), [] 괄호 및 대괄호
*, +, ?, {n}, {n,}, {n,m} 한정 기호
^, $, \anymetacharacter 앵커 및 시퀀스
| 대체
■ 정규식의 응용

정규식

설명

a?b+$ a가 있을 수도 있고 없을 수도 있으며 그 뒤에 하나 이상의 b로 끝나는 문자열
a.[0-9]  a뒤에 한 문자와 숫자가 붙어 있는 패턴
[ab] a 또는 b (a|b 와 동일한 표현)
^[a-zA-Z] 영문자로 시작하는 문자열
[^a-zA-Z] 영문자가 없는 문자열
[0-9] 0 부터 9 까지 숫자 중 하나
[0-9]+ 1개 이상 자릿수의 숫자. 즉, 모든 숫자
[0-9]* 0개 이상 자릿수의 숫자. 모든 숫자일 수도 있고 아예 숫자가 없을 수도 있다.
[^-0-9a-zA-Z._]+ 하이픈, 숫자, 영어소문자, 영어대문자, 쩜, 언더바가 아닌 하나 이상의 문자
(.*) 모든 문자
■ 정규식 예시
괄호로 묶은 항목은 순서대로 \1, \2, \3...로 나타냅니다. & 는 원본 값을 뜻합니다.

원본

이전이름

새로운이름

결과

Mr.jpg (Mr)(\..*) \1s\2 Mrs.jpg
abc (a)b(c) &-\1-\2 abc-a-c
bcd (a|b)c*d &-\1 bcd-b
abcde (.*)c(.*) &-\1-\2 abcde-ab-de
cde (ab|cd)e &-\1 cde-cd
정규식을 이용한 이름변경에서 이전이름 항목의 맨 끝에 # 을 추가하면 "정규표현식"을 "치환" 기능으로 사용되도록 해줍니다. # 다음에 숫자를 추가하면 반복할 회수를 지정하는 의미입니다. 
예) (.*) - (.*)#5