티스토리 뷰
오늘은 정규 표현식에 대해서 공부 해보려고 한다.
종종 일할 때 문자열을 검색하거나 필터링할 때 유용하게 쓰이는데, 단순히 문법을 아는 것과 자유자재로 쓰는것은 차이가 있는 것 같다. 자유자재로 쓰는 날까지 아자아자.!!
정규표현식
- 문자열을 처리하는 방법 중의 하나로 특정한 조건의 문자를 '검색'하거나 '치환'하는 과정을 매우 간편하게 처리 할 수 있도록 하는 수단
- 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
'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 |