Skip to content

정규식 토큰 해설

핵심 정규식 토큰 전부: 앵커, 문자 클래스, 수량자, 그룹, 플래그. 각 토큰의 의미와 구체적인 매칭 예를 담았습니다. Regex Tester 도구의 빠른 참조 판입니다.

정규식 토큰은 조합해서 씁니다. 앵커, 문자 클래스, 수량자를 쌓아 패턴을 만듭니다. ^는 시작에 고정하고, \d는 숫자에 매칭하고, {2,4}는 반복 횟수를 정합니다. ^\d{2,4}$로 조합하면 숫자 2~4개로 된 전체 문자열에 매칭합니다. 패턴은 왼쪽에서 오른쪽으로, 토큰 하나씩 읽으세요. 함께 제공되는 Regex Tester 도구에서 이 토큰을 자신의 텍스트로 직접 시험해 볼 수 있습니다.

참조 표 · 55 항목regex-tester 도구 열기 →
55 of 55 rows
앵커
문자열 시작 위치, 또는 m 플래그 사용 시 각 줄의 시작 위치에 매칭합니다.^He → He
문자열 끝 위치, 또는 m 플래그 사용 시 각 줄의 끝 위치에 매칭합니다.lo$ → lo
단어 경계에 매칭합니다. 단어 문자와 단어가 아닌 문자 사이의 위치입니다.\bcat\b → cat
단어 경계가 아닌 곳에 매칭합니다. 단어 문자 두 개 또는 단어가 아닌 문자 두 개 사이의 위치입니다.\Bar → ar
문자 클래스
줄바꿈을 제외한 임의의 한 문자에 매칭합니다. s 플래그를 켜면 줄바꿈도 포함합니다.a.c → abc
임의의 숫자 0~9에 매칭합니다.\d → 7
숫자가 아닌 임의의 문자에 매칭합니다.\D → a
임의의 단어 문자(글자, 숫자, 밑줄)에 매칭합니다.\w → _
단어 문자가 아닌 임의의 문자에 매칭합니다.\W → !
임의의 공백 문자(공백, 탭, 줄바꿈)에 매칭합니다.a\sb → a b
공백이 아닌 임의의 문자에 매칭합니다.\S → a
대괄호 안에 나열한 문자 중 하나에 매칭합니다.[aeiou] → e
대괄호 안에 나열한 문자가 아닌 임의의 문자에 매칭합니다.[^aeiou] → s
주어진 범위(a부터 z까지)의 임의의 한 문자에 매칭합니다.[a-z] → m
줄바꿈을 포함한 임의의 한 문자에 매칭합니다. 줄을 넘나드는 점 표현의 정형 구문입니다.[\s\S] → \n
u 플래그 사용 시 모든 문자 체계의 임의의 유니코드 글자에 매칭합니다.\p{L} → é
u 플래그 사용 시 모든 문자 체계의 임의의 유니코드 숫자 문자에 매칭합니다.\p{N} → ٣
이스케이프: 라인 피드 문자 하나에 매칭합니다.\n → line feed
이스케이프: 탭 문자 하나에 매칭합니다.\t → tab
이스케이프: 캐리지 리턴 문자 하나에 매칭합니다.\r → carriage return
주어진 두 자리 16진수 코드를 가진 문자 하나에 매칭합니다.\x41 → A
u 플래그 사용 시 주어진 16진수 코드 포인트의 문자 하나에 매칭합니다.\u{1F600} → 😀
v 플래그의 클래스 교집합: 두 집합 모두에 동시에 속하는 문자에 매칭합니다.[[a-z]&&[^aeiou]] → t
수량자
직전 토큰을 0회 이상 반복해서 매칭합니다.ab* → abbb
직전 토큰을 1회 이상 반복해서 매칭합니다.a+ → aaa
직전 토큰을 0회 또는 1회 매칭해 선택 사항으로 만듭니다.colou?r → color
직전 토큰을 정확히 n회 매칭합니다.a{3} → aaa
직전 토큰을 n회 이상 매칭합니다.a{2,} → aaaa
직전 토큰을 n회 이상 m회 이하(양 끝 포함) 매칭합니다.a{2,4} → aaa
게으른 수량자: 직전 토큰을 0회 이상, 가능한 한 적게 매칭합니다.<.*?> on <a><b> → <a>
게으른 수량자: 직전 토큰을 1회 이상, 가능한 한 적게 매칭합니다.\d+? on 123 → 1
게으른 수량자: 직전 토큰을 0회 또는 1회 매칭하며 0회를 우선합니다.ab?? on ab → a
게으른 수량자: 직전 토큰을 n~m회, 가능한 한 적게 매칭합니다.a{1,3}? on aaa → a
독점 수량자(PCRE): 직전 토큰을 0회 이상 매칭한 결과를 붙잡고, 다른 분할을 시도하려는 역추적을 절대 하지 않습니다..*+a on aaa → no match
그룹과 선택
캡처 그룹: 해당 나열에 매칭하고 역참조를 위해 기억합니다.(ab)+ → abab
비캡처 그룹: 해당 나열에 매칭하지만 기억하지는 않습니다.(?:ab)+ → abab
긍정 탐색(lookahead): 다음 문자가 abc이면 매칭하되 소비하지 않습니다.a(?=b) → a
부정 탐색(lookahead): 다음 문자가 abc가 아니면 매칭하되 소비하지 않습니다.a(?!b) → a
역참조: 캡처 그룹 1이 찾은 텍스트 그대로에 매칭합니다.(a)\1 → aa
선택: 세로선 앞이나 뒤의 표현식 중 하나에 매칭합니다.cat|dog → dog
이름 붙인 캡처 그룹: 해당 나열에 매칭하고 주어진 이름으로 기억합니다.(?<year>\d{4}) → year = 2026
긍정 후방 탐색(lookbehind): 앞의 문자가 abc이면 매칭하되 소비하지 않습니다.(?<=a)b → b
부정 후방 탐색(lookbehind): 앞의 문자가 abc가 아니면 매칭하되 소비하지 않습니다.(?<!a)b → b
이름 역참조: 이름 붙인 그룹이 찾은 텍스트 그대로에 매칭합니다.(?<w>\w+) \k<w> → the the
원자 그룹(PCRE): 해당 나열에 한 번 매칭하고 내부로는 절대 역추적하지 않습니다.(?>a+)ab on aab → no match
브랜치 리셋(PCRE): 모든 가지가 같은 그룹 번호를 재사용하는 선택입니다.(?|(cat)|(dog)) → \1 = dog
플래그
전역 플래그: 첫 번째만이 아니라 문자열의 모든 매칭을 찾습니다./a/g on aaa → a, a, a
대소문자 무시 플래그: 매칭 시 글자의 대소문자를 무시합니다./Hi/i → hi
여러 줄 플래그: ^와 $를 각 줄의 시작과 끝으로 취급합니다./^a/m matches at the start of each line
dotall 플래그: 점이 줄바꿈에도 매칭되게 합니다./a.b/s → a\nb
유니코드 플래그: 패턴과 입력을 유니코드 코드 포인트로 취급합니다./\u{1F600}/u → 😀
sticky 플래그: lastIndex가 설정한 정확한 위치에서만 매칭합니다./ab/y matches only at lastIndex
indices 플래그: 모든 매칭의 시작·끝 위치를 결과에 추가합니다./b/d on abc → indices [1, 2]
유니코드 집합 플래그: 더 엄격한 u로, 클래스 안에서 집합 연산도 허용합니다./[a-z&&[^aeiou]]/v → t
확장 플래그(PCRE): 패턴 안의 이스케이프되지 않은 공백과 # 주석을 무시합니다./a b/x → ab