프로그래밍

정규표현식(Regular Expression)이란 무엇일까?

MAJG 2023. 2. 22. 23:07
반응형

정규표현식은 정규식이라고도 불리며 영어로는 Regurlar Expression 혹은 Regex라고 합니다.
정규표현식을 사용하면 문자열에서 특정 패턴을 찾아낼 수 있기 때문에 컴파일러, IDE 같은 고급 문서 편집기, 혹은 사용자가 입력한 이메일, 전화번호등의 유효성을 검증하기 위해 사용됩니다.

정규표현식은 패턴과 플래그를 가지며 아래와 같은 구조로 작성됩니다.

/ 패턴 / 플래그
/ (?:Mon|Tues|Wednes)day / g

Monday            // true
Tuesday            // true
Wednesday        // true
Thursday        // false
Friday            // false

패턴

패턴은 문자열에서 메타문자를 조합해 검색기준을 정의합니다.

문자 클래스

필요한 규칙에 따라 문자 집합을 정의할 수 있고, 만들어져 있는 클래스를 사용할 수 있습니다.

[ABC]

집합의 요소와 일치하는 문자를 선택한다.

[^ABC]

집합의 요소를 제외한 문자를 선택한다.

[A-Z]

하이픈-을 이용하면 범위를 지정할 수 있다.
A-Z는 대문자 A부터 Z까지, a-z는 소문자 a부터 z까지를 선택하고, 한글은 가-힣, ㄱ-ㅎ, ㅏ-ㅣ를 사용하면된다.
또는 A-z, ㄱ-힣으로 대문자,소문자, 자음, 모음, 복합까지 포함할 수도 있다. 숫자 또한 0-9로 표현된다.

.

모든 문자를 의미하는 메타문자로 탭, 스페이스 등 모든 이스케이프 시퀸스들도 포함한다.
하지만 개행을 의미하는 \n\r은 포함하지 않기 때문에 개행을 포함하기 위해선 s플래그를 사용해야한다.

\w

[A-Za-z0-9_]의 범위와 동일하며 영문 대문자, 소문자, 숫자 0 ~ 9, _ 를 선택한다.

\W

\w와 반대의 의미로 영문 대문자, 소문자, 숫자 0 ~ 9, _ 을 제외한 문자를 선택한다.

\d

[0-9]와 같은 의미로 숫자만 선택한다.

\D

\d와 반대의 의미로 숫자를 제외한 문자를 선택한다.

\s

space, tab 등과 같은 공백문자만을 선택합니다.

\S

\s와 반대의 의미로 space, tab 등과 같은 공백문자를 제외한 문자를 선택합니다.

앵커

앵커는 패턴의 위치를 나타낼 때 사용합니다.

^

문자열이 뒤에 따라오는 패턴으로 시작되어야합니다.
m플래그가 있다면 문자열 전체가 아닌 각 행에서 검색을 합니다.


$

문자열이 앞의 패턴으로 종료되어야합니다.
m플래그가 있다면 문자열 전체가 아닌 각 행에서 검색을 합니다.


\b

\w\W의 경계를 나타냅니다. 아래의 예제에서 \b를 사용하지 않는다면 모든 to가 선택됩니다.

\B

\b가 문자와 비문자의 경계를 나타냈다면 \B는 비문자와 비문자 사이의 경계를 나타냅니다.


플래그

플래그는 문자열에서 패턴을 검색할 때 선택적으로 지정해주는 기능입니다.
플래그로는 global, case insensitive, multi line, single line(dotall), unicode, sticky가 있습니다.

플래그 설명
g 문자열 내에서 모든 패턴을 검색한다.
i 영문의 대소문자를 구별하지 않고 검색한다.
m 문자열 전체에서 특정 패턴을 찾는것이 아닌 각 행마다 패턴을 검색할 때 사용한다.
s 모든 문자를 의미하는 .메타문자에 \n개행을 포함하도록 한다.
u 문자열 내에서 유니코드를 검색할 때 사용한다.
y 문자열의 특정위치에서 패턴을 검색할 때 사용한다.
반응형