본문 바로가기
etc

시험 단골 문제 정규표현식 정리해보기!

by 1two13 2023. 3. 6.
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 // $ 문자 그리고 숫자 하나와 매칭한다.

 

 

 

 

반응형

정규 표현식을 쉽게 테스트할 수 있는 사이트


다른 사이트도 많이 있지만 나는 요걸 가장 많이 사용한다!

 

 

 

 

느낀점


정규표현식은 사실 외우기 보다는 그때 그때 필요할 때 찾아보면 될거같다. 하지만 정리를 하고 안하고는 다르기 때문에 한 번 쯤 각 잡고 정리를 하면 나중에 찾아볼 때도 엄청 쉬울거 같다.👍🏻

 

 

 

 

 

 

참고자료


 

Medium

Out of nothing, something. You can find (just about) anything on Medium — apparently even a page that doesn’t exist. Maybe these stories about finding what you didn’t know you were looking for will take you somewhere new?

medium.com

 

 

 

 


질문이나 잘못된 점은 댓글로 남겨주세요 :)💖

 

728x90
반응형

댓글