정규표현식 Meta 문자표

정규 표현식의 용어들

정규 표현식에서 사용되는 기호를 Meta 문자라고 표현한다. 표현식에서 내부적으로 특정 의미를 가지는 문자를 말하며 간단하게 정리하면 아래의 표와 같다.

표현식

의미

^x

문자열의 시작을 표현하며 x문자로 시작됨

x$

문자열의 종료를 표현하며 x문자로 종료됨

.x

임의의 한 문자의 자리수를 표현하며 문자열이 x로 끝남

x+

반복을 표현하며 x문자가 한번 이상 반복됨

x?

존재여부를 표현하며 x문자가 존재할 수도, 존재하지 않을 수도 있음

x*

반복여부를 표현하며 x문자가 0번 또는 그 이상 반복됨

x|y

or를 표현하며 x 또는 y문자가 존재함

(x)

그룹을 표현하며 x를 그룹으로 처리함

(x)(y)

그룹들의 집합을 표현하며 앞에서 부터 순서대로 번호를 부여하여 관리하고 x,y는 각 그룹의 데이터로 관리

(x)(?:y)

그룹들의 집합에 대한 예외를 표현하며 그룹 집합으로 관리되지 않음

x{n}

반복을 표현하며 x문자가 n번 반복됨

x{n,}

반복을 표현하며 x문자가 n번 이상 반복됨

x{n,m}

반복을 표현하며 x문자가 최소 n번 이상 최대 m번 이하로 반복됨

Meta 문자들 중에서 좀 더 특수하게 사용되는 문자들이 존재한다. '[]' 는 내부에 지정된 문자열의 범위 중에서 한 문자만을 선택한다는 특수한 의미를 가진다. 그리고 내부에서 Meta 문자를 사용하면 다른 의미를 가지고 동작할 수 있으므로 잘 확인하고 사용해야 한다. 좀 더 특별한 용도로 사용되는 것들은 아래의 표와 같다.

표현식

의미

[xy]

문자 선택을 표현하며 x와 y 중에 하나를 의미

[^xy]

not을 표현하며 x 및 y를 제외한 문자를 의미

[x-z]

range를 표현하며 x ~ z 사이의 문자를 의미

₩^

escape를 표현하며 ^를 문자로 사용함을 의미

₩b

word boundary를 표현하며 문자와 공백 사이의 문자를 의미

₩B

non word boundary를 표현하며 문자와 공백 사이가 아닌 문자를 의미

₩d

digit 를 표현하며 숫자를 의미

₩D

non digit를 표현하며 숫자가 아닌 것을 의미

₩s

space를 표현하며 공백 문자를 의미

₩S

non space를 표현하며 공백 문자가 아닌 것을 의미

₩t

tab을 표현하며 탭 문자를 의미

₩v

vertical tab을 표현하며 수직 탭 문자를 의미

₩w

word를 표현하며 알파벳 + 숫자 + _ 중의 한 문자임을 의미

₩W

non word를 표현하며 알파벳 + 숫자 + _ 가 아닌 문자를 의미

정규표현식을 사용할 때는 Flag라는 것이 존재하는데 Flag를 사용하지 않으면 문자열에 대해서 검색을 한번만 처리하고 종료하게 된다. Flag는 다음과 같은 것들이 존재한다.

Flag

의미

g

Global 을 표현하며 대상 문자열 내에 모든 패턴들을 검색하는 것을 의미

i

Ignore case 를 표현하며 대상 문자열에 대해서 대/소문자를 식별하지 않는 것을 의

m

Multi line을 표현하며 대상 문자열이 다중 라인의 문자열인 경우에도 검색하는 것을 의미

사용 예제

  1. 개별 숫자 : /[0-9/g 전체에서 0~9 사이에 아무 숫자 '하나' 찾음

  2. 개별 문자 : /[to]/g 전체에서 t 혹은 o를 모두 찾음

  3. 단어 : /filter/g 전체에서 f 따로 i 따로 찾는 게 아니라 'filter' 라는 단어에 매칭되는 것을 찾음

  4. 단어 제외 : /₩b(?:(?!to)₩w)+₩b/g 전체에서 'to'라는 단어를 빼고 다른 단어 매칭 / 확인결과 "Tutorial" 도 제외됨

  5. 단어 제외 : ₩b(?!₩bto₩b)₩w+₩b 전체에서 'to' 라는 단어를 빼고 다른 단어 매칭 / 확인결과 "Tutorial"는 제외 안됨. 이게 더 정확하다고 볼 수 있을 듯.

Last updated