[Regular Expression] 정규표현식 매칭 옵션, 또는 플래그(Flag) 정리

수정자(Modifier) 또는 옵션(Option)이라고도 합니다. 정규 표현식, 또는 매칭 대상 문자열에 영향을 미치는 설정 항목을 켜거나 끕니다. 자바스크립트에서는 정규 표현식 끝의 “/” 오른쪽에 붙여서 다음처럼 플래그를 표시합니다.

let regex = /a-z/gi

플래그

기능

i

영문 대소문자를 구분하지 않음.

g

입력 문자열 전체에서 일치하는 문자열을 찾습니다. 문자열 끝까지 매치를 실행해 모든 일치 성공 결과를 반환합니다.

m

멀티라인 매치.

위치를 한정하는 캐럿(^)과 달러($) 메타 문자에 영향을 주는 옵션입니다. 시작 매치(^)와 끝 매치($)가 개행문자 “\n”으로 구분되는 각 행마다 일치합니다. “\n”으로 개행되는 여러 행 문자열에서 “m” 플래그가 없으면 전체 문자열의 시작과 끝에만 일치합니다.

s

싱글 라인 매치.

멀티라인(m)의 반대가 아니며 다른 용도의 플래그입니다.

플래그 “m”과 중복 사용 가능합니다. s 플래그를 사용하면 개행 문자(\n)를 메타문자 “.”과 일치합니다. “.” 메타문자는 개행 문자를 제외한 나머지 모든 문자를 일치하지만 “s” 플래그를 사용하면 개행 문자까지 일치에 포함합니다.

“.” 메타 문자에 대응하기 위한 플래그라고 생각하면 됩니다.

d

g 플래그와 중복으로 사용할 수 없습니다.

정규 표현식 메소드 exec()과 같은 결과를 반환합니다. 매치된 한 개의 문자열에 대한 매칭 정보를 반환합니다.

x

정규표현식 안의 공백을 모두 무시합니다.

자바스크립트 정규표현식에서는 현재 지원되지 않습니다.

매칭할 대상 문자열과 관련된 플래그가 아닙니다. 복잡한 정규표현식을 공백 으로 띄워서 블록 단위로 구분을 해서 작성할 수 있도록 하는 정규표현식 패턴 보조 플래그입니다.

 

굵은 글씨로 밑줄을 그은 내용은 자주 실수하거나, 예외적인 규칙 설명이므로 특히 주의해야 합니다.

플래그는 개발 언어에 따라 조금씩 다르며, 특정 개발 언어에서만 사용하는 플래그도 있습니다. 개발 언어별 플래그 및 사용 방법은 책의 끝 부분에서 각 언어별로 설명합니다.

정규 표현식의 기초적인 내용들을 알았으므로 이제 정규 표현식을 작성하는데 필요한 작성 규칙을 하나씩 알아보겠습니다.