정규표현식은 정규식이라고도 불리며 영어로는 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
는 비문자와 비문자 사이의 경계를 나타냅니다.
플래그
플래그는 문자열에서 패턴을 검색할 때 선택적으로 지정해주는 기능입니다.
플래그로는 g
lobal, case i
nsensitive, m
ulti line, s
ingle line(dotall), u
nicode, s
ticky가 있습니다.
플래그 | 설명 |
---|---|
g | 문자열 내에서 모든 패턴을 검색한다. |
i | 영문의 대소문자를 구별하지 않고 검색한다. |
m | 문자열 전체에서 특정 패턴을 찾는것이 아닌 각 행마다 패턴을 검색할 때 사용한다. |
s | 모든 문자를 의미하는 . 메타문자에 \n 개행을 포함하도록 한다. |
u | 문자열 내에서 유니코드를 검색할 때 사용한다. |
y | 문자열의 특정위치에서 패턴을 검색할 때 사용한다. |
'프로그래밍' 카테고리의 다른 글
JSON Response에 $id가 포함되는 문제 (0) | 2024.01.18 |
---|---|
DLL ( Dynamic Linked Library ) (0) | 2020.08.10 |