1. 메타 문자 (특수 문자 기호)
ㅇ 정규표현식 내 특별한 의미를 갖는 문자 기호
ㅇ 비록, 정규표현식이,
- 기본 연산 셋(연접,반복,선택) 만으로도 표현 가능하지만,
- 프로그래머에게 정규표현식을 보다 쉽게 사용토록 하기 위해,
- 특별한 의미를 갖는 문자들에 의한,
. 例) (선택, 문자 클래스, 서브 그룹화, 앵커, 수량자, 점, 수정자, 이스케이프)
=> ( | , [ ] , ( ) , ^ $ \ , * + ? { } , . , g i m s , \ )
- 문자 기호 표현 방법임
2. 선택 (selection) : |
ㅇ | (OR, 선택 또는 UNION, 합)
- 例) the|The|THE => the 또는 The 또는 THE 라는 문자열 패턴을 나타냄
ㅇ 주요 역할
- 2 이상의 패턴 중 하나를 선택할 때
3. 문자 클래스 (character class) (한 문자) : [ ]
※ (문자 클래스는, 특정한 한 문자를 나타냄)
- `[ ]` 안에 여러 문자를 나열할 수도,
- `-`를 이용하여 문자열 범위 지정도 가능
ㅇ 대괄호 [ ] 내에 지정된 모든 문자들에서 한 문자와의 일치를 뜻함
- 例) [0123456789] => 0부터 9까지 숫자 1개를 찾는 문자 클래스
- 例) [aeiou] => 영어 소문자 모음 1개를 찾는 문자 클래스
ㅇ 문자 클래스 내 범위 지정 : - (ASCII 코드 순서에 따름)
- 例) [0-9] => 0부터 9까지 숫자
- 例) [a-zA-Z] => 영문 알파벳 문자
. 참고로, `-` 자체를 포함하려면, [-a-z] 또는 [a-z-] 처럼 맨앞이나 맨뒤에 적으면 됨
ㅇ 문자 클래스 내 부정 : 선두 위치에 ^를 쓰면 부정
- 例) [^0-9A-Za-z] => 숫자나 영문 알파벳 이외의 모든 문자에 일치함
4. 서브 패턴 (그룹화) (subexpression) : ( )
※ ☞ 메타문자 그룹화 참조
- 서브 패턴(그룹화)은, 부품 단위로 감싸서 구별짓기 위함
. 例) color 또는 colour 둘다 매치하려면, col(o|ou)r
5. 수량자 (quantifier) (반복) : *, +, ?, { }
※ ☞ 메타문자 수량자 참조
- 수량자는, 1 이상의 바로전 문자들의 반복 범위를 지정할 때 쓰여짐)
. * : (최소 0회 이상 매치)
. + : (최소 1회 이상 매치)
. ? : (0 또는 1회 만 매치)
. {n,m} : (범위 지정 반복, n회부터 m회까지 반복)
. {n} : (n회 반복)
. {n,} : (n번 이상 반복)
6. 앵커 (anchor) : ^, $, \
※ ☞ 메타문자 앵커 참조
- (문자열이 아니고, `위치` 및 `특정 용도`에 일치시키는 것)
- 위치 고정 앵커 : ^, $ (정규식 패턴을 특정 위치에 고정하여, 그 위치에 일치시키기 위함)
- 특정 용도 앵커 : \
(\
와 순수 문자와의 조합으로 특정 용도에 사용)
. \
A (텍스트 선두 위치)
. \
b (단어 경계 위치)
. \
B (단어 경계를 제외한 모든 위치)
. \
z (텍스트 끝 위치)
- 기타 용도 앵커 :
. \
d (1개 숫자에 일치)
. \
D (숫자가 아닌 모든 문자)
. \
w (1개 문자에 일치)
. \
s (공백문자) 등
7. 점 (임의 한 문자) : .
ㅇ `문자`,`숫자`,`_`,`@`,`쉼표(,)`,`따옴표(')`,`공백 문자` 포함
- 단, 점(.) 수량자는, 공백문자 중 `줄바꿈 문자` 만은 제외(예외)하고 있음
. (공백 문자 : 스페이스 바,백 스페이스,수평탭,수직탬,폼피드,`줄바꿈 문자`)
ㅇ 例)
- .* => 아무 문자도 없거나, 임의 문자가 1회 이상 반복될 때 매치됨
- ^ab.* => ab로 시작(^)하는 모든 문자열(ab,abc,abcd 등)과 매치됨
- .+ => 모든 문자열이 매치됨
- r.*e => re, rare, recognize 등 r로 시작하고 e로 끝나는 임의 문자열들이 매치됨
- ab. => ab로 시작하는 모든 3 문자로된 문자열이 매치됨
8. 수정자 (modifier) 또는 옵션 : g, i, m, s
※ (검사 위치,범위를 수정해 줌)
ㅇ g (global) : 전역 검색
- 모든 일치를 전부 대상으로 함
- 그렇지 않으면(즉, g가 아니면/없으면), 최초 일치 만
ㅇ i (ignore case) : 대소문자 구분 안함
ㅇ m (multi line) : 일치 대상에 줄바꿈이 있더라도 전체 검색
- 따라서, 전체 모두를 매 라인별로 검색 가능
ㅇ s (single line, dotall) : `임의 한 문자 . `에 줄바꿈 문자까지도 포함
- 따라서, 전체 라인 모두를 한 라인 처럼 일치할 때까지 모두다 검색 가능
※ 例) /img
- 영문 대소문자 구분 없이(/i), 모든 줄에 걸쳐서(/m), 전역 검사(/g)를 함
9. 이스케이프
ㅇ 이스케이프 : \
☞ 이스케이프 시퀀스 (Escape Sequence) 참조
- (위의 메타문자와 같은 표시 불가능한 문자를 표현할 때, 이 문자를 순수 문자로 처리 함)
. 例) https?:\
/\
/ => http:// 또는 https://와 일치
. 例) \
( 와 \
) => 소 괄호 기호 ( ) 는 모두 메타문자 이므로, 이스케이프 시켜야 함
. 例) \
[ 와 \
] => 대 괄호 기호 [ ] 는 모두 메타문자 이므로, 이스케이프 시켜야 함