정규표현식 요약

정규표현식 요약

정규표현식의 개념은 1950년대 미국의 수학자 스티븐 콜 클리니(Stephen Cole Kleene)가 형식 언어 이론의 일환으로 도입했다.
이후 유닉스 시스템 등에서 텍스트 검색 및 처리에 활용되면서 켄 톰슨(Ken Thompson) 등 여러 컴퓨터 과학자들에 의해 실제 구현 및 발전이 이루어졌다.

 

아래는 정규표현식의 기본 문법과 고급 문법을 구분하여 표로 정리한 내용이다.

 

기본 문법

구분 문법 설명
리터럴 a, 1, @ 해당 문자를 그대로 매칭
메타문자 . 임의의 한 문자
메타문자 ^ 문자열의 시작
메타문자 $ 문자열의 끝
메타문자 \ 이스케이프
문자 집합 [abc], [a-z], [^abc] 대괄호 안의 문자 집합, 범위 지정 및 부정 문자 집합
미리 정의된 클래스 \d 숫자
미리 정의된 클래스 \w 단어 문자 ([a-zA-Z_])
미리 정의된 클래스 \s 공백 문자 ([ \t\n\f\r])
반복 (Quantifiers) *, +, ? - 각각 0회 이상, 1회 이상, 0 또는 1회 반복
- 소괄호로 그룹핑하지 않으면 반복 기호는 항상 바로 앞에 있는 한 요소에만 적용됨
반복 (Quantifiers) {n}, {n,}, {n,m} 각각 정확히 n회, n회 이상, n ~ m 회 사이
그룹핑 및 캡처 () 패턴을 그룹화하여 캡처
선택 (Alternation) | OR 연산자 (예: a|b)

 

고급 문법

구분 문법 설명
비캡처 그룹 (?:...) 캡처하지 않고 그룹화
전방 탐색 (?=...) 긍정 전방 탐색
전방 탐색 (?!...) 부정 전방 탐색
후방 탐색 (?<=...), (?<!...) (?<=...): 긍정 후방 탐색, (?<!...): 부정 후방 탐색
이름 있는 캡처 그룹 (?P...) 또는 (?...) 그룹에 이름을 부여 (정규표현식 엔진에 따라 문법 차이 있음)