기본 문법
- 패턴을 그래도 매칭하는 경우 : 편집기에서 “찾기" 기능을 통해서 특정 단어를 찾는 것 처럼, 단어 그대로를 패턴으로 사용하여 매치되는 영역을 찾는다.
- 메타문자 및 수량 한정자를 적용하는 경우 : 정규식 패턴에 쓰이는 문자 중에는 특별한 의미를 가지는 메타 문자들이 있는데, 이들을 사용하여 보다 폭넓은 패턴에 매치할 수 있다.
- 그룹 및 look around 기능을 사용하는 경우 : 제법 고급 정규식이라 할 수 있는 부분으로, 패턴의 일부를 그룹으로 묶거나, 특정 패턴의 앞 뒤로 다른 패턴이 오는 조건을 더하는 경우이다.
메타 문자
^
: 문자열의 시작을 표현한다. [ ... ]
내부에서 쓰이는 경우라면 뒤의 패턴에 일치하지 않는 것을 선택한다.
^http
: 문자열이 http로 시작하는 경우에만 매치하며, 중간에 나타난 http에는 매치하지 않는다.
ab[^0-9]
: “ab” 뒤에 숫자가 아닌 것이 오는 것에만 매치한다. (“abc” – O, “ab1” – X)
$
: 문자열의 끝을 표현한다.
them$
: 문자열이 “them”으로 끝난 경우에만 해당 “them”에 매치한다.
\b
: 단어의 경계. 문자열 시작과 끝, 공백, 개행, 탭, 콤마, 구두점, 대시문자 등이 올 수 있다.
\bplay\b
: 는 단어 경계로 구분되는 “play”에는 매치한다. 하지만 “playground”의 “play”에는 매치하지 않는다.
\B
: \b
가 아닌것. 정규식 메타문자에서는 흔히 대문자로 표현한 것은 소문자로 표현한 문자의 반대를 의미한다.
\bplay\B
: “play”뒤에 단어의 경계가 아닌 것이 올 때에만 매치한다. “playground”, “playball”의 “play”에 매치한다. 뒤에 오는 “g”, “b” 등의 문자는 포함하지 않는다.
\s
: 공백 문자 및 탭 문자에 매치한다.
\S
: 공백 문자가 아닌 한 글자에 매치한다.
\d
: 숫자에 매치한다. [0-9]
와 같다.
\D
: 숫자가 아닌 문자에 매치한다. [^0-9]
와 같다.
\w
: 단어를 만들 수 있는 글자. 알파벳 대소문자, 숫자, 언더스코어를 포함한다. [A-Za-z0-9_]
와 같다.
\W
: \w
에 포함되지 않는 문자들
\n
: 개행문자. \r
은 캐리지 리턴이다.
\
: 이스케이프용 문자. 정규식 상의 특별한 의미가 있는 문자들을 문자 그대로 쓸 때 앞에 붙인다. \^
라고 쓰면 “^” 문자 그대로를 가리킨다.
.
: 아무 문자 1개에 대응된다. 공백 역시 문자 1개로 취급된다.
선택 패턴
|
문자를 이용하면 A | B
의 패턴으로 A 혹은 B에 매칭할 수 있다. 예를 들어 tomato와 potato에 모두 매칭하고 싶다면 tomato|potato
라고 쓸 수 있다. 선택 패턴은 이후에 등장하는 그룹 패턴과 관련하여 보다 강력하게 쓰일 수 있다.
- 그외의 선택패턴으로는
[ ... ]
이 있다. 대괄호속에 넣은 문자 중에서 하나에 매칭하는 것이다. [cfh]all
이라는 패턴은 call
, fall
, hall
에 모두 매치될 수 있다. 특히 선택 패턴은 A-B
를 통해서 특정 범위를 표현할 수도 있는데, 숫자의 경우 [0-9]
, 알파벳 소문자의 경우 [a-z]
, 알파벳대문자의 경우 [A-Z]
와 같은 식으로 한 글자에 매칭하는 것이 가능하다. 유니코드를 지원하는 정규식에서는 [ㄱ-힣]
을 이용해서 한글 한 글자에 매칭하는 것도 가능하다.
- 또한 선택 패턴 내에서
^
이 쓰이면 not
의 의미가 되며, 이 문자 뒤에 오는 문자들은 제외하게 된다. [^cfh]all
은 앞서 나온 call
, fall
, hall
에는 매치하지 않으며 mall
에는 매치하게 된다.