728x90
반응형
2023년 프론트엔드 상반기 데브매칭에도 그렇고, 코테에서도 그렇고, 자주자주 정규표현식이 나온다. 이때마다 그냥 나중에 해야지~ 라고 미루고 미뤘지만 이젠 진짜 해야할 때가 온 것 같아서 정리를 하려고 한다.
정규표현식
정규식은 특정 검색 패턴에 대한 하나 이상의 일치 항목을 검색하여 텍스트에서 정보를 추출하는 데 매우 유용하다. 정규식을 학습한 후에는 거의 모든 프로그래밍 언어에서 동일하게 사용할 수 있다! 엔진이 지원하는 문법 버전이나 최신 특징에 따라 약간의 차이는 있을 수 있지만 말이다!
flags
정규식은 보통 /abc/와 같은 형식을 사용한다. 즉, 두 개의 / 사이에 정규식을 작성한다. 두 번째 슬래쉬 뒤에 flag를 작성할 수 있다.
flag를 사용하지 않으면 문자열에 대해서 검색을 한 번만 처리한다.
- g(global): 매칭되는 모든 항목을 찾는다.
- m(multi-line): 대상 문자열이 다중 라인의 문자열인 경우에도 검색한다.
- i(insensitive): 대소문자 구분을 무시하고 매칭한다. 예를 들어 /abc/i는 AbC를 매칭한다.
정규 표현식의 용어들
정규표현식에서 사용되는 기호를 meta문자라고 한다.
표현식 | 의미 |
^x | 문자열의 시작, x문자로 시작됨 |
x$ | 문자열의 종료, x문자로 종료됨 |
.x | 임의의 한 문자의 자리수, 문자열이 x로 끝남 |
x+ | 반복 표현, x문자가 1번 이상 반복됨 |
x? | 존재여부, x문자의 유무 |
x* | 반복여부, x문자가 0번 또는 그 이상 반복됨 |
x|y |
or, x 또는 y문자가 존재함 |
(x) | 그룹, x를 그룹으로 처리함 |
(x)(y) | 그룹들의 집합을 표현, 앞에서부터 순서대로 번호를 부여하여 관리하고 x, y는 각 그룹의 데이터로 관리 |
(x)(?:y) | 그룹들의 집합에 대한 예외, 그룹 집합으로 관리되지 않음 |
x{n} | 반복, x문자가 n번 반복됨 |
x{n,} | 반복, x문자가 n번 이상 반복됨 |
x{n,m} | 반복, x문자가 최소 n번 이상 최대 m번 이하로 반복됨 |
표현식 | 용어 |
[xy] | 문자 선택, x와 y중에 하나 |
[^xy] | not, x 및 y를 제외한 문자 |
[x-z] | 범위, x ~ z 사이의 문자 |
\^ | escape, ^를 문자로 사용 |
\b | word boundary, 문자와 공백 사이의 문자 |
\B | not word boundary, 문자와 공백 사이의 문자가 아닌 문자 |
\d | digit, 숫자 |
\D | not digit, 숫자가 아닌 것 |
\s | space, 공백 문자 |
\S | not space, 공백 문자가 아닌 것 |
\t | tab, 탭 문자 |
\v | vertical tab, 수직 탭 |
\w | word, 알파벳 + 숫자 + _ 중의 한 문자 |
\W | not word, 알파벳 + 숫자 + _가 아닌 문자 |
728x90
예제와 설명
^, $
^The // ^는 ^ 뒤에 오는 문자열(The)로 시작하는 모든 문자열을 매칭한다.
end$ // $는 $ 앞에 오는 문자열(end)로 끝나는 문자열을 매칭한다.
^The end$ // ^ $ 사이에 있는 문자열(The end)과 정확하게 일치하는 문자열을 매칭한다.
roar // roar가 들어 있는 모든 문자열과 매칭한다.
*, +, ?, {}, ()
abc* // ab 그리고 0개 이상의 c를 포함한 문자열과 매칭한다.
abc+ // ab 그리고 1개 이상의 c를 포함한 문자열과 매칭한다.
abc? // ab 그리고 0개 또는 1개 이상의 c를 포함한 문자열과 매칭한다.
abc{2} // ab 그리고 2개의 c를 포함한 문자열과 매칭한다.
abc{2,} // ab 그리고 2개 이상의 c를 포함한 문자열과 매칭한다.
abc{2,5} // ab 그리고 2개 이상 5개 이하의 c를 포함한 문자열과 매칭한다.
a(bc)* // a 그리고 0개 이상의 bc를 포함한 문자열과 매칭한다.
a(bc){2,5} // a 그리고 2개 이상 5개 이하의 bc를 포함한 문자열과 매칭한다.
|, []
a(b|c) // a 그리고 b 또는 c를 포함한 문자열과 매칭한다.
a[bc] // 위와 동일
\d, \w, \s, .
\d // 숫자 하나와 매칭한다.
\w // 문자(숫자, 영문, 언더바) 하나와 매칭한다.
\s // 공백문자(탭, 줄바꿈, 스페이스) 하나와 매칭한다.
. // 모든 문자 하나와 매칭한다.
\D, \W, \S
\d, \w, \s 와는 반대의 의미로 매칭시킬 수 있다.
\D // 숫자가 아닌 문자열 하나와 매칭한다.
\특수문자
특수문자를 문자 그대로 사용하려면 \를 앞에 붙여야 한다.
또한 출력이 불가능한 \t(탭문자), \n(줄바꿈문자), \r(캐리지턴문자) 도 매칭할 수 있다.
\$\d // $ 문자 그리고 숫자 하나와 매칭한다.
반응형
정규 표현식을 쉽게 테스트할 수 있는 사이트
다른 사이트도 많이 있지만 나는 요걸 가장 많이 사용한다!
느낀점
정규표현식은 사실 외우기 보다는 그때 그때 필요할 때 찾아보면 될거같다. 하지만 정리를 하고 안하고는 다르기 때문에 한 번 쯤 각 잡고 정리를 하면 나중에 찾아볼 때도 엄청 쉬울거 같다.👍🏻
참고자료
질문이나 잘못된 점은 댓글로 남겨주세요 :)💖
728x90
반응형
'etc' 카테고리의 다른 글
카카오 소셜 로그인(oAuth2.0) 과정 알아보기 (0) | 2023.03.23 |
---|---|
파비콘 아이콘 생성하기(+아이패드) (0) | 2023.02.14 |
댓글