티스토리 뷰

오늘은 정규 표현식에 대해서 공부 해보려고 한다.

종종 일할 때 문자열을 검색하거나 필터링할 때 유용하게 쓰이는데, 단순히 문법을 아는 것과  자유자재로 쓰는것은 차이가 있는 것 같다. 자유자재로 쓰는 날까지 아자아자.!!

 

정규표현식

- 문자열을 처리하는 방법 중의 하나로 특정한 조건의 문자를 '검색'하거나 '치환'하는 과정을 매우 간편하게 처리 할 수 있도록 하는 수단

- 1956년 스티븐 클레이니가 최초로 고안.

- 현재 닷넷 언어자바파이썬POSIX CC++  등에서 표준 라이브러리를 통해 제공한다.

 

기본형태

/정규표현식/flag

 

-flag

g: global

m: multiline

i: case insensitive

 

총 4가지로 분류하여 살펴볼 수 있다.

Groups and Ranges

Character Description Example
| 또는 - Hi|Hello
() 그룹 - (a|b)(c|d)
[] 문자셋 
(구분자는따로없고하나의 Character 단위로 인식) 
- [abc]
- [a-zA-Z0-9]
[^] 부정문자셋. 괄호안의 어떤 문자가 아닐때 - [^a-zA-Z]
(?:) 찾지만 기억하지는 않음. - (?:pre)

Quantifiers

Character Description Example
? zero or one -http(s?)://
* zero or more -a{*}
+ one or more -@[a-zA-Z+]\.com
{n} n번 반복 -hel{2}0
{min,} 최소 -w{3,}
{min,max} 최소, 그리고 최대 -[0-9]{3,4}

Boundary-type

Character Description Example
\b 단어 경계 \babc
\B 단어 경계가 아님 \Bcef
^ 문장의 시작 -^ab
$ 문장의 끝 -$yz

Character classes

Character Description Example
\ 특수문자가 아닌문자 -\.com
. 어떤글자 (줄바꿈 문자 제외) -he..o
\d digit 숫자 -\d{3,4}[- .]
\D digit 숫자 아님 -\D{1}
\w word 문자 -\w* (문자인 모든 character)
\W word 문자 아님 -\W* (문자가 아닌 모든 character)
\s space 공백 -\s*
\S space 공백 아님 -\S*

Quiz

1. 전화 번호 형식 찾기
- \d{2,3}[- .]\d{3,4}[- .]\d{3,4}

2. 이메일 찾기
- [a-zA-Z0-9._+-]+@[a-zA-Z0-9]+\.[a-zA-Z0-9.]

3. 유투브 주소(뒷자리만) 찾기
- (?:https?:\/\/)?(?:www\.)?youtu.be\/([a-zA-Z0-9-]{11})

 

더 많은 문제

https://regexone.com/

Reference

https://www.youtube.com/watch?v=t3M6toIflyQ

https://github.com/dream-ellie/regex 

 

GitHub - dream-ellie/regex

Contribute to dream-ellie/regex development by creating an account on GitHub.

github.com