Post

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

추후 추가 예정

This post is licensed under CC BY 4.0 by the author.