💫 문자, 문자 클래스
.
. : 줄바꿈을 제외한 임의의 문자 한 개와 매치
예문
123456789
정규표현식
.5.
결과
123456789
[]
[] : 대괄호 내부에 포함된 문자 중 하나와 매치
예문
hello, world!
정규표현식
[aeiou]
결과
hello, world!
+) 대괄호 내에 -를 사용하여 범위를 쉽게 지정할 수 있다.
[0-9]는 [0123456789]와 같다.
예문
hello, world!
정규표현식
[a-z]
결과
hello, world!
[^]
[^] : 대괄호 내부에 포함되지 않은 문자 중 하나와 매치
예문
hello, world!
정규표현식
[^aeiou]
결과
hello, world!
\d, \D
\d : 숫자를 나타내는 집합으로 [0-9]과 같다.
예문
010-1234-5678
정규표현식
\d
결과
010-1234-5678
\D : 숫자가 아닌 문자를 나타내는 집합으로 [^0-9]와 같다.
예문
010-1234-5678
정규표현식
\D
결과
010-1234-5678
\w, \W
\w : 알파벳과 숫자, _를 나타내는 집합으로 [a-zA-Z0-9_]과 같다.
예문
let _ = 100.0 - 12.3
정규표현식
\w
결과
let _ = 100.0 - 12.3
\W : \w가 아닌 모든 집합으로 [^a-zA-Z0-9_]과 같다.
예문
let _ = 100.0 - 12.3
정규표현식
\W
결과
let _ = 100.0 - 12.3
\s, \S
\s : 공백문자를 나타내는 집합
\S : 공백문자가 아닌 문자를 나타내는 집합
\b, \B
\b : 단어 경계 바이너리 메타문자
예문
Lorem Ipsum is simply dummy text of the printing and typesetting industry.
정규표현식
\bt
결과
Lorem Ipsum is simply dummy text of the printing and typesetting industry.
정규표현식
t\b
결과
Lorem Ipsum is simply dummy text of the printing and typesetting industry.
\B : 단어 경계가 아닌 바이너리 메타문자
예문
Lorem Ipsum is simply dummy text of the printing and typesetting industry.
정규표현식
\Bt
결과
Lorem Ipsum is simply dummy text of the printing and typesetting industry.
💫 반복자
*, +, ?
* : 앞의 문자나 그룹이 0번 이상 반복
+ : 앞의 문자나 그룹이 1번 이상 반복
? : 앞의 문자나 그룹이 0번 또는 1번만 등장
예문
Lorem Ipsum is simply dummy text of the printing and typesetting industry.
정규표현식
m*y
m+y
m?y
결과
Lorem Ipsum is simply dummy text of the printing and typesetting industry.
Lorem Ipsum is simply dummy text of the printing and typesetting industry.
Lorem Ipsum is simply dummy text of the printing and typesetting industry.
{}
{n} : 앞의 문자나 그룹이 n번 반복
예문
010-1234-5678
031-123-4567
02-123-4567
정규표현식
[0-9]{3}-[0-9]{4}-[0-9]{4}
결과
010-1234-5678
031-123-4567
02-123-4567
{n,} : 앞의 문자나 그룹이 n번 이상 반복
예문
010-1234-5678
031-123-4567
02-123-4567
정규표현식
[0-9]{3}-[0-9]{3,}-[0-9]{4}
결과
010-1234-5678
031-123-4567
02-123-4567
{n,m} : 앞의 문자나 그룹이 n번 이상, m번 이하 반복
예문
010-1234-5678
031-123-4567
02-123-4567
정규표현식
[0-9]{2,3}-[0-9]{3,}-[0-9]{4}
결과
010-1234-5678
031-123-4567
02-123-4567
💫 기타
그룹
()
() : 괄호 안에 있는 문자열을 하나의 그룹으로 묶는 메타문자
아래 사용된 정규표현식((\d{1,3}\.){3}\d{1,3})은 (\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})와 같다.
예문
127.0.0.1
142.250.76.142
223.130.200.107
정규표현식
(\d{1,3}\.){3}\d{1,3}
결과
127.0.0.1
142.250.76.142
223.130.200.107
선택지
|
| : OR연산자로, 왼쪽 또는 오른쪽에 있는 문자열 중 하나와 일치하는 경우를 나타내는 메타문자
예문
hello, world!
정규표현식
(hello|world).
결과
hello, world!
앵커
^
^ : 문자열의 시작 위치를 지정
$
$ : 문자열의 끝 위치를 지정
💫 고급
게으른 수량자
*, +, {n,}과 같은 반복자에 *?, +?, {n,}?처럼 ?를 붙여서 게으르 수량자를 사용할 수 있다.
예문
The teacher asked, "Which language is the most used in the world?" and the student replied, "Java."
정규표현식
".*"
".*?"
결과
The teacher asked, "Which language is the most used in the world?" and the student replied, "Java."
The teacher asked, "Which language is the most used in the world?" and the student replied, "Java."
역참조
역참조는 그룹()으로 묶은 표현식을 참조하여 사용할 수 있다. 표현식은 \1, \2, \3등으로 앞에서 부터 순서대로 1부터 참조할 수 있다.
아래 정규표현식에서는 \1이 [1-6]에서 나온 값을 참조한다.
예문
<H1>It's valid HTML tag</H1>
<H2>It's also valid HTML tag</H2>
<H3>It's not valid HTML tag</H2>
정규표현식
<H([1-6])>.*?<\/H\1>
결과
<H1>It's valid HTML tag</H1>
<H2>It's also valid HTML tag</H2>
<H3>It's not valid HTML tag</H2>
전방탐색
?=, ?!
?= : 일치하는 영역을 발견해도 반환하지 않는 패턴
예문
Apple: $155 for sale
Banana: $3 on sale
iPhone14 Pro: $999 sold
정규표현식
.+(?=:)
결과
Apple: $155 for sale
Banana: $3 on sale
iPhone14 Pro: $999 sold
?! : 일치하는 영역을 제외한 영역을 발견해도 반환하지 않는 패턴
예문
Apple: $155 for sale
Banana: $3 on sale
iPhone14 Pro: $999 sold
정규표현식
.+(?=:)(?!.+sold)
결과
Apple: $155 for sale
Banana: $3 on sale
iPhone14 Pro: $999 sold
후방탐색
?<=
?<= : 일치하는 영역을 발견해도 반환하지 않는 패턴
예문
Apple: $155 for sale
Banana: $3 on sale
iPhone14 Pro: $999 sold
정규표현식
(?<=\$)\d+
결과
Apple: $155 for sale
Banana: $3 on sale
iPhone14 Pro: $999 sold
?<! : 일치하는 영역을 제외한 영역을 발견해도 반환하지 않는 패턴 x(
'Dev' 카테고리의 다른 글
Typescript의 자주쓰는 유틸리티 타입들 (Pick, Omit, Partial, Exclude, Record) (0) | 2023.09.03 |
---|---|
우분투 서버에 MySQL 설치부터 MySQL Workbench에 연결하기까지 (0) | 2023.08.07 |
Jupyter Notebook 서버에서 실행하기! (0) | 2022.05.30 |