티스토리 뷰
Lesson 1: An Introduction, and the ABCs | RegexOne
정규 표현식은 코드, 로그 파일 등에서 정보를 추출하는데 매우 유용하다. 실용적인 예제 위주의 학습을 해보자.
첫 번째로 인지해야할 사항은 모든 것은 하나의 문자라는 것이다.
숫자도 문자다. \d
문자는 0~9 중 하나의 숫자와 매칭된다. \
문자 뒤에 오는 문자는 메타문자다. 그 문자 그대로가 아니라 별도의 특수한 기능을 한다.
조커 카드처럼 만능의 문자가 있는데, 정규 표현식에서는 .
이다. 문자, 숫자, 띄어쓰기, 모든 것과 매칭된다. 온점을 나타내려면 \.
을 사용한다.
특정 문자들과 매칭되게 하려면 대괄호 []
를 이용한다. [abc]
는 a, b, c 중에서 하나의 문자와 매칭된다.
반대로 특정 문자들을 제외하고 매칭되게 하려면 대괄호 []
와 모자 ^
를 사용한다. [^abc]
는 a, b, c를 제외한 하나의 문자와 매칭된다.
연속된 문자들은 대시 -
를 이용해서 따로 조건을 만들 수 있다. [0-6]
는 0부터 6까지 숫자와 매칭되고, [^n-p]
는 n부터 p를 제외한 문자와 매칭된다. 알파벳과 숫자를 나타내는 메타문자 \w
를 대시 기호로 표현하면 [A-Za-z0-9]
가 된다. 대소문자 구분을 주의하자.
반복회수를 지정할 때는 중괄호 {}
를 이용한다. a{3}
은 문자 a 3개를 나타내고, .{2,6}
은 아무 문자 2~6개를 나타낸다.
정규 표현식에서 가장 강력한 개념 중 하나는 임의의 개수의 문자를 찾는 것이다. 별 *
은 0개 이상을 나타내고, 더하기 +
는 1개 이상을 의미한다.
있거나 없거나 관계 없는 경우는 물음표 ?
를 이용한다. ab?c
는 abc 또는 abc와 매칭된다.
공백문자는 띄어쓰기 , 탭
\t
, 줄바꿈 \n
, 캐리지 리턴 \r
을 사용하고, 이 전부를 \s
로 나타낼 수도 있다.
한 줄 안에서 시작과 끝을 찾는 기호는 각각 모자 ^
와 달러 $
이다.
소괄호 ()
를 이용해 문자들의 그룹을 표현식으로 묶을 수도 있다. 또한 그룹 안에 그룹을 포함할 수도 있다.
|
문자를 이용해 논리적 OR 연산을 처리할 수 있다. I love (cats|dogs)
는 I love cats 또는 I love dogs와만 매칭된다.
기타 특수 문자들은 다음과 같다:
\d
: 숫자\s
: 모든 공백 기호\w
: 알파벳과 숫자\D
: 숫자를 제외한 문자\S
: 띄어쓰기를 제외한 문자\W
: 알파벳을 제외한 문자 (구두점과 같은)\b
: 단어와 단어 사이 경계까지 매칭 (\w+\b
와 같이 사용)
Back referencing 은 그룹과 얼마나 매칭되었는지 조건을 걸 수 있다. \0
, \1
, \2
, ... .
추가로 읽어볼 문서:
- Total
- Today
- Yesterday