Skip to content

RegExp

1. 정규표현식

데이터 내에서 광범위하게 또는 세부적으로 일치하는 패턴을 찾아내는 특정 문자 시퀀스를 정규표현식이라고 한다.
즉, 특정한 규칙을 가진 문자열의 집합을 표현하는 데 사용하는 형식 언어를 말한다.

2. 메타문자

원래 그 문자가 가진 뜻이 아닌 특별한 용도로 사용하는 문자를 말한다.
다음과 같은 문자들이 메타문자에 속한다.

. ^ $ * + ? { } [ ] \ | ( )

2-1. [object Object]

패턴설명
[a-zA-Z]알파벳 모두
[0-9]숫자
\d숫자, [0-9]와 동일한 표현식
\D숫자가 아닌 것, [^0-9]와 동일한 표현식
\swhitespace 문자, [ \t\n\r\f\v]와 동일한 표현식
\w문자+숫자(alphanumeric), [a-zA-Z0-9_]와 동일한 표현식
\W문자+숫자(alphanumeric)가 아닌 문자, [^a-zA-Z0-9_]와 동일한 표현식

3. Dot(.)

줄바꿈 문자인 \n을 제외한 모든 문자와 매치됨을 의미한다. 정규식을 작성할 때 re.DOTALL 옵션을 주면 \n 문자와도 매치된다.

a.b = a + 모든문자 + b

a.b는 a와 b라는 문자 사이에 어떤 문자가 들어가도 모두 매치된다는 말이다.

a[.]b = a + Dot(.)문자 + b

a[.]b는 "a.b" 문자열과 매치되고, "a0b" 문자열과는 매치되지 않는다 단, 문자 클래스([]) 내에 Dot(.) 메타 문자가 사용된다면 이것은 "모든 문자"라는 의미가 아닌 문자 . 그대로를 의미한다

4. 반복 (*)

ca*t =  * 바로 앞에 있는 문자 a가 0부터 2억번 반복될 수 있다는 의미이다.
정규식문자열Match 여부설명
ca*tctYes"a"가 0번 반복되어 매치
ca*tcatYes"a"가 0번 이상 반복되어 매치 (1번 반복)
ca*tcaaatYes"a"가 0번 이상 반복되어 매치 (3번 반복)

5. 반복 (+)

위에서 반복을 의미하는 *이 0부터 반복된다면 +는 1부터 반복된다.

ca+t = c + a(1번 이상 반복) + t
정규식문자열Match 여부설명
ca+tctNo"a"가 0번 반복되어 매치되지 않음
ca+tcatYes"a"가 1번 이상 반복되어 매치 (1번 반복)
ca+tcaaatYes"a"가 1번 이상 반복되어 매치 (3번 반복)

6. 반복 ({m,n}, ?)

{ } 메타 문자를 사용하여 반복 횟수를 고정할 수 있다 {m, n} 정규식을 사용하면 반복 횟수가 m부터 n까지 매치할 수 있다. 또한 m 또는 n을 생략할 수도 있다. {1,}은 +와 동일하고, {0,}은 *와 동일하다.

ca{2}t = c + a(반드시 2번 반복) + t
ca{2,5}t = c + a(2~5회 반복) + t
ab?c = a + b(있어도 되고 없어도 된다) + c
정규식문자열Match 여부설명
ca{2}tcatNo"a"가 1번만 반복되어 매치되지 않음
ca{2}tcaatYes"a"가 2번 반복되어 매치
ca{2,5}tcatNo"a"가 1번만 반복되어 매치되지 않음
ca{2,5}tcaatYes"a"가 2번 반복되어 매치
ca{2,5}tcaaaaatYes"a"가 5번 반복되어 매치
ab?cabcYes"b"가 1번 사용되어 매치
ab?cacYes"b"가 0번 사용되어 매치

7. 파이썬에서 정규표현식 사용하기

re.compile을 사용하여 정규 표현식(ab*)을 컴파일할 수 있다.

import re
p = re.compile('ab*')

8. 정규식을 이용한 문자열 검색

다음과 같은 방법으로 상황에 따라 정규식을 이용하여 문자열을 검색할 수 있다.

Method목적
match()문자열의 처음부터 정규식과 매치되는지 조사한다.
search()문자열 전체를 검색하여 정규식과 매치되는지 조사한다.
findall()정규식과 매치되는 모든 문자열(substring)을 리스트로 돌려준다.
finditer()정규식과 매치되는 모든 문자열(substring)을 반복 가능한 객체로 돌려준다.

더 알아보기

9. 각 언어별 정규식 사용방법 알아보기

10. 정규표현식을 연습할 수 있는 사이트

RegExr은 정규식(RegEx/RegExp)을 학습, 구축 및 테스트하기 위한 온라인 도구로 JavaScript 및 PHP/PCRE 정규식을 지원한다.

연습하러 가기

11. 참고자료