개발자라면 개발 언어를 불문하고 정규표현식을 접하는 일이 정말 많을텐데요. 초보 개발자인 저에게 정규 표현식은 아직 낯설기만 하네요. 그래서 이번 시간에는 정규 표현식을 완전히 마스터 해보는 시간을 가지려 합니다!
개인적으로 정규 표현식 공부 자료중에서 제일 이해하기 쉽게 만든 영상이라 생각되어서 이 영상을 기준으로 공부하려 합니다!
❓정규 표현식이 무엇일까요?
정규 표현식은 문자열의 검색, 패턴 매칭 및 텍스트 조작을 위한 유연하고 강력한 도구입니다!
기본적인 패턴은 다음과 같습니다
정규 표현식의 자세한 내용은 아래 페이지를 참고하시면 좋습니다!
정규 표현식을 잘 사용하기 위해서는 네 가지 문법만 잘 익히면 된다고 하는데요! 어떤 것들이 있을까요? 하나씩 알아보겠습니다!
❗1. Groups and Ranges
Character 뜻
() | 그룹 |
[] | 문자셋, 괄호안의 어떤 문자든 |
[^] | 부정 문자셋, 괄호안의 어떤 문가 아닐때 |
(?:) | 찾지만 기억하지는 않음 |
Hi | Hello ⇒ Hi와 Hello를 둘 다 찾는다.
(HI|Hello) ⇒ Hi와 Hello를 같은 그룹으로 둘 다 찾는다.
(HI|Hello)|(AND) ⇒ Hi와 Hello를 같은 그룹으로 찾고, AND를 다른 그룹으로 찾는다.
gr(e|a)y ⇒ grey와 gray을 각각의 그룹으로 찾는다.
gr(?:e|a)y ⇒ grey와 gray을 그룹 지정 없이 찾는다.
gr[ea]y ⇒ grey와 gray 둘 다 찾는다.
[a-f] ⇒ a부터 시작해 f까지 해당하는 문자를 다 찾는다. (a,b,c,d,e,f)
[a-zA-Z0-9] ⇒ 알파벳과 숫자를 찾는다. (자주 쓰는 것)
[^a-zA-Z0-9] ⇒ 알파벳과 숫자를 제외한 나머지를 찾는다.
❗2. Quantifiers
? | 없거나 있거나 (zero or one) |
* | 없거나 있거나 많거나 (zero or more) |
+ | 하나 또는 많이 (one or more) |
{n} | n번 반복 |
{min,} | 최소 |
{min,max} | 최소, 그리고 최대 |
gra?y ⇒ gry와 gray 두 개를 찾는다.
gra*y ⇒ gry, gray, graay, … , graaaaaaa…ay 를 찾는다.
gra+y ⇒ gray, graay, … , graaaaaaa…ay를 찾는다.
gra{2,3}y ⇒ graay, graaay를 찾는다.
❗3. Boundary Type
\b | 단어 경계 |
\B | 단어 경계가 아님 |
^ | 문장의 시작 |
$ | 문장의 끝 |
\bYa ⇒ 단어 시작에 사용되는 Ya를 찾는다.
Ya\b ⇒ 단어 뒤에서 사용되는 Ya를 찾는다.
Ya\B ⇒ 단어 뒤에서 사용되는 Ya를 제외한 Ya를 찾는다.
^Ya ⇒ 문장 시작에 사용되는 Ya를 찾는다.
Ya$ ⇒ 문장 끝에서 사용되는 Ya를 찾는다.
❗4. Character classes
Character 뜻
\ | 특수 문자가 아닌 문자 |
. | 어떤 글자 (줄바꿈 문자 제외) |
\d | digit 숫자 |
\D | digit 숫자 아님 |
\w | word 문자 |
\W | word 문자 아님 |
\s | space 공백 |
\S | space 공백 아님 |
. ⇒ 줄바꿈 문자 제외 모두 찾는다.
\. ⇒ “.” 마침표를 찾는다.
\d ⇒ 숫자를 모두 찾는다.
\D ⇒ 숫자를 제외한 모두를 찾는다.
이렇게 4가지 법칙에 대해서 알아봤습니다. 이 법칙들을 실질적으로 써보면서 익힌다면 금방 익숙해질 것 같네요!
위 페이지에서 정규표현식을 직접 사용해볼 수 있는데요. 필요할 때마다 여기서 검사하는 것도 좋은 방법일 것 같습니다!
위 페이지에서는 정규 표현식을 연습할 수 있는 곳입니다! 여기서 기초적인 정규 표현식을 연습한다면 빠르게 익힐 수 있겠네요!
'개발 상식' 카테고리의 다른 글
[개발 상식] CDN은 무엇일까? (0) | 2024.03.02 |
---|---|
[개발 상식] 쿠키, 세션, 토큰 어떤 차이일까? (0) | 2023.11.23 |
[개발 설계] 퍼사드(Facade) 패턴 (0) | 2023.10.31 |
[개발 상식] git 불필요한 커밋을 합치는 방법. Rebase (0) | 2023.10.29 |
[개발 상식] 단위 테스트 (0) | 2023.10.26 |