Regular Expression
많은 텍스트 중에서 원하는 패턴을 찾아 검색과 유효성 검사, 변환하는 등 유용하게 사용할 수 있다.
JS, Python 등 다양한 언어에서도 지원하고, 심지어 VS Code에서도 Ctrl + F를 통해 텍스트 검색을 할 때 정규표현식을 사용할 수 있다.
우선 기본 문법에 대해서 공부해보려 한다.
문법
/pattern/flags
pattern
pattern에 찾고자 하는 텍스트 패턴을 작성할 수 있다. 텍스트 패턴 외에도 아래의 다양한 정규표현식 문자를 활용하여 원하는 것만을 정확하게 찾을 수 있다.
기본 메타 문자
|
(or) 여러개의 패턴을 동시에 찾을 수 있으며, 어느 하나라도 일치하면 정규표현식의 결과로 검색 된다.
[]
(대괄호) 대괄호 안의 문자 집합 중 하나라도 일치하는 것을 찾는다. 다음과 같은 검색이 가능하다.
/gr[ae]y
: gray와 grey를 모두 찾음/[a-zA-z0-9]
: 소문자 a-z, 대문자 A-Z가 한글자라도 포함되어 있으면 찾음
[^]
(not) 대괄호 안의 문자 앞에 선언하여 해당 문자를 제외한 전체 문자를 찾는다.
\
(escape) 다음의 문자를 탈출(escape)한다. 이를 활용해 정규식이나 언어에서 사용되는 특수문자를 사용할 수 있다.
특수문자
.
줄바꿈 문자를 제외한 모든 문자를 찾는다.
\d
(digit) 숫자를 찾는다.
\D
숫자가 아닌 모든 문자를 찾는다.
\w
a-z, A-Z와 같은 word 글자를 찾는다.
\W
word 글자가 아닌 모든 문자를 찾는다.
\s
공백을 찾는다.
\S
공백이 아닌 모든 문자를 찾는다.
위치문자
\b
단어 경계에 있는 패턴만을 검색한다. 여기서 경계란 앞 또는 뒤의 공백을 의미한다. 단어 앞의 경계를 찾고자 하면 단어 앞에 선언하고, 단어 뒤의 경계를 찾고자 하면 뒤에 선언하면 된다.
/\bst/
: start와 test 중 st가 앞에 있는 start만 찾는다/st\b/
: start와 test 중 st가 뒤에 있는 test만 찾는다
\B
\b
와 정확히 반대의 작용을 한다.
^
해당 문자열의 시작부분에서 그 다음에 나오는 문자에 대해서만 검색한다.
$
해당 문자열의 끝에 있는 문자에 대해서만 검색한다.
수량자
문자 뒤에 지정하여 해당 문자를 몇개까지 검색할지 정할 수 있다. {n,m}
해당 문자가 연속하여 n번 이상, m번 이하일 때 검색한다. n만 입력할 경우 정확히 n개일 때를 검색하며, 콤마 뒤에 m을 생략하면 최대값 없이 최소값만 지정하여 검색한다.
?
(0 or 1) 해당 문자가 0개이거나 1개일 때 검색한다.
*
({0,}) 해당 문자가 0개 이상이면 검색한다.
+
({1,}) 해당 문자가 1개 이상이면 검색한다.
그룹
()
(소괄호) : 소괄호 안의 패턴을 그룹핑한다. 정규표현식을 찾은 뒤 변환을 할 때 원하는 패턴만을 묶어주는 용도로 활용할 수 있다. 다음과 같은 검색이 가능하다.
/col(o|ou)r
: color와 colour을 모두 찾음 (사실?
를 활용해도 된다)
flags
추후 추가 예정