티스토리 뷰
오늘은 정규 표현식에 대해서 공부 해보려고 한다.
종종 일할 때 문자열을 검색하거나 필터링할 때 유용하게 쓰이는데, 단순히 문법을 아는 것과 자유자재로 쓰는것은 차이가 있는 것 같다. 자유자재로 쓰는 날까지 아자아자.!!
정규표현식
- 문자열을 처리하는 방법 중의 하나로 특정한 조건의 문자를 '검색'하거나 '치환'하는 과정을 매우 간편하게 처리 할 수 있도록 하는 수단
- 1956년 스티븐 클레이니가 최초로 고안.
- 현재 닷넷 언어, 자바, 파이썬, POSIX C, C++ 등에서 표준 라이브러리를 통해 제공한다.
기본형태
/정규표현식/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})
더 많은 문제
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
'Computer Engineering > Common' 카테고리의 다른 글
| [Git] 비어있지 않은 로컬 저장소로 Clone하기 (0) | 2022.06.08 |
|---|---|
| [programmers] MySQL - Level 2 문제풀이 (1/2) (0) | 2022.04.27 |
| [programmers] MySQL - Level1 문제풀이 (0) | 2022.04.27 |
| Visual Studio Shortcut (0) | 2022.03.28 |
| 프레임워크(Framework) (0) | 2021.09.25 |