💫작성자 및 원본 글💫
dgh03207 (https://github.com/ssafy-tech-concert/ssafy-tech-concert/blob/master/Etc/REGEX.md)
❔ 정규표현식이란?
: 특정 규칙을 가진 문자열의 집합을 표현하는데 사용하는 형식 언어로, 컴퓨터 과학의 정규 언어로부터 유래하였다.
✍ 정규표현식의 기본 원칙들
메타 문자를 그냥 문자로 쓰고 싶을때 : \ 역슬래쉬를 사용
📍 위치로 찾을때
메타문자 | 설명 | 기타 |
---|---|---|
^'문자' | 문자열에서 '문자'로 시작하는 것을 찾음 | |
'문자'$ | 문자열에서 '문자'로 끝나는 것을 찾음 |
- ^hi
- hihellohi
- hi$
- hihellohi
🔍 문자로 찾을때
메타문자 | 설명 | 기타 |
---|---|---|
문자 클래스 [] | []사이의 문자들과 매치 | |
-(하이폰) | 두 문자 사이의 범위 | |
[^] | []안에서 사용하면 not을 의미하게된다. | [^0-9] == 숫자를 제외한 문자만 매치됨 |
.(Dot) | 줄바꿈 문자인 '\n'을 제외한 모든 문자와 매치 | |
| | or과 같은 역할을함 |
Test : himymeminehi
- [ ]
- [mi] : 문자m 혹은 i와 매치됨 -> himymeminehi
- [my]. : 문자 m혹은 y와 매치되는 것 + . -> himymeminehi
- [him][hie] : h,i,m중 하나와 매치되는 것과 h,i,e중 하나와 매치되는 것이 이어진 문자 -> himymeminehi
- .(Dot)
- . : 모든 문자와 매치됨 -> himymeminehi
- ..... : 5개의 문자와 매치 -> himymeminehi
- \..\. : .과.사이의 모든 문자를 가리킨다.
- .h.imymeminehi -> .h.imymeminehi
Test : ABCDabcefghijklm12345789
- -
- ABCDEFGHIJKLMNOPQRSTUVWXYZ
- abcdefghijklmnopqrstuvwxyz
- 0123456789
- [A-g] : A부터 Z + a부터 g까지 의 문자 -> ABCDabcefghijklm12345789
- [C-Ka-d2-6] : ABCDabcefghijklm12345789
- [^]
- [^cd] : CD를 제외한 문자 -> ABCDabcefghijklm12345789
- [^a-z] : 알파벳 소문자를 제외한 문자 -> ABCDabcefghijklm12345789
Test : Monday Tuesday Friday
- |
- (on|ues|rida) : on이거나 ues이거나 rida 인것들을 선택 -> Monday Tuesday Friday
- (Mon|Tues|Fri)day : Mon이거나 Tues 이거나 Fri이면서 뒤에 day까지 선택 -> Monday Tuesday Friday
- ..(n|es|i)day : n이거나 es거나 i인 문자들뒤에 day가 있고 그 문자 앞에있느 문자 두개 까지 선택 -> Monday Tuesday Friday
🔍 수량자
개념 | 설명 | 기타 |
---|---|---|
* | 0번이상 일치 | |
+ | 1번 이상 일치 | |
? | 0번 혹은 1번 일치 | ?수량자에 추가하면 _게으른 수량자_로 만듬 |
{n} | 정확히 n번 일치 | |
{n,} | 적어도 n번 일치 | |
{m,n} | 반복 횟수 m부터 n까지(m또는 n 생략가능) | {2,3} == 2부터 3까지 반복횟수 매치 |
게으른 수량자 : 요소를 최대한 적게 찾는 것.
탐욕적 수량자 : 요소를 최대한 많이 찾음
Test : himymmeminehi
- *
- m*e : m or e가 0번이상 일치하는 것 -> himymmeminehi
- +
- m+e : 1번이상 일치하는 것 -> himymmeminehi
- ?
- m?e : m 혹은 e가 있거나 없거나 -> himymmeminehi
Test : -@- -AAA-- -- "_" -- _
- .*
- 모든 텍스트 선택 -> -@- -AAA-- -- "_" -- _
- -A*-
- 앞뒤로 -가 있으면서 A가 0개 이상 있음 -> -@- -AAA-- -- "_" -- _
- \*+
- *문자가 1개이상 있는 것
- -@+-
- -사이에 @가 1개이상 있는 것
- [^ ]+
- 공백이 없는 것이 1개 이상인 것 -> 띄어쓰기를 제외한 모든 텍스트 부분을 선택
Peter Piper picked a peck of pickled peppers
- .{5}
- 5글자가 선택됨 -> Peter Piper picked a peck of pickled peppers
- [pti]{1,3}
- p,t,i 중 문자가 1개에서 3개있는 경우 ->Peter Piper picked a peck of pickled peppers
- [a-z]{3,}
- 영어 소문자가 3개 이상 선택되는 경우 -> Peter Piper picked a peck of pickled peppers
📄 문자클래스
메타문자 | 설명 | 기타 |
---|---|---|
\d | 숫자와 매치 | |
\D | 숫자가 아닌 것과 매치 | |
\s | whitespace문자와 매치 | |
\S | whitespace문자가 아닌 것과 매치 | |
\w | 숫자+문자와 매치 | 공백은 여기에 포함 안됨 |
\W | 숫자+문자가 아닌 것과 매치 | 공백은 여기에 포함 안됨 |
\b , .\ b | word boundary 앞, 뒤 | |
\B , .\B | word boundary 앞 or 뒤 를 제외한 문자 |
- 공백은 w에 포함되지 않는다.
+) 정규표현식을 학습하기위한 사이트
'SSAFY TechTalk Study' 카테고리의 다른 글
Day 16 : Web Socket(웹 소켓)과 WebRTC (0) | 2021.09.21 |
---|---|
Day 15 : 타입 스크립트 (TypeScript) (0) | 2021.09.18 |
Day13 : HTTP Keep Alive (0) | 2021.09.10 |
Day 12 : UI와 UX (0) | 2021.09.05 |
Day11 : Transaction과 Isolation Level (0) | 2021.09.02 |