이해를 위한 기록들

드디어 정규 표현식

moonkey 2022. 12. 22. 13:18

시작하며

미루고 미루던 정규표현식을 시작했다. 사실 '정규표현식'이라는 이름과 그 형태에서 느껴지는 왠지 모르는 강력함 때문에 미뤘던 것인데 공부해보니 생각보다 어렵지 않아서 조금 허탈했다. dream coding의 ellie 가 정리해준 내용을 바탕으로 기록을 남긴다.

 

 

정규표현식

  • 텍스트에서 원하는 패턴을 찾는 경우 사용한다. 
  • 기본적으로 /  ... / 와 같이 슬래시 안에 원하는 패턴을 정의한다. 

 

정규표현식 문법

표현 의미
| 또는 / () 안에서 사용
() 그룹 / 추출하길 원하는 부분을 그룹화해서 사용한다.
[] 문자셋 / 여러개의 문자를  포함하고 싶을 때 사용한다. 
[^] 부정 문자셋 / 괄호 안에 문자들을 제외한 부분을 선택한다.
(?:) 그룹으로 사용할 경우 추출할 때 그룹인 부분을 생략해서 보여준다.

예시

/a(b|c)/ ab,ac 선택
/a[1234]/ a1,a2,a3,a4 선택 /   | 을 쓰는 것보다 더 효율적
/a(^c|d)/ ad 선택, ac는 제외

 

 

표현                         의미
? 있거나 없거나 / 0 또는 1 선택
* 없거나 있거나 많거나 / 0 또는 1 또는 그 이상 선택
+ 있거나 많거나 / 1 또는 그 이상 선택
{n} n번 반복될 경우 선택
{n,m} 최소 n번 반복되고 최대 m번 반복될 경우 선택
{n,} 최소 n번 반복되고 그 이상 반복될 경우 선택

예시

/ab?/ a, ab 선택
/ab{3}/ abbb 선택
/a+/ a,aa,aaa,aaaa 선택

 

 

표현  의미
\b 단어 경계
\B 단어 경계 아님
^ 문장의 시작
$ 문장의 끝

예시

/\bi.\b/ hello my name is austin / 단어 사이 경계에 있는 'is' 선택
/\Bel\B/ hello my name is austin / 단어 사이 경계에 있지 않는 'el' 선택
/^a/ a,agawe,austin 선택
/e$/ have, she 선택

 

 

 

표현  의미
\ 특수 문자가 아닌 문자 선택
. 모든 글자 (한글자만) 선택
\d 모든 숫자 선택
\D 모든 숫자가 아닌 문자 선택
\w 모든 word 문자 선택
\W 모든 word가 아닌 문자 선택
\s 모든 공백 선택
\S 모든 공백 빼고 선택

예시

/a./ ab, a5 선택
/\da/ 1a, 5a 선택
/\D10/ a10, g10 선택
/\syoutube/ ' youtube' 선택

 

아래사이트에서 정규 표현식이 잘 적용되는지 확인할 수 있다. 

https://regexr.com/

 

RegExr: Learn, Build, & Test RegEx

RegExr is an online tool to learn, build, & test Regular Expressions (RegEx / RegExp).

regexr.com

 

참고

https://github.com/dream-ellie/regex