정규표현식

초록귤·2024년 9월 16일
0

무궁무진한 정규표현식
제대로 정리하고 활용에 능숙해지기 위해 정리해주었습니다!

정규표현식은 대/소문자를 구분합니다!

1.생활코딩 정규표현식 시리즈

First matches, All matches

case : ^who -> 문자열 중 시작되는 것만 체크
case : who$ -> 문자열 중 끝에 who로 끝나는 경우만 체크

example) 달러로 시작되는 정규표현식 작성하고 싶다면? ^$
\백스페이스를 사용하면 정규표현식 의미가 아닌 문자 그대로로 인식된다.
(이 백스페이스를 escape라고 말한다. 정규표현식에서 '탈출'하게 해주어 문자로 파싱하게 해주는 역할 : 역슬래시)
example) 달러로 끝나는 정규표현식 작성하면? $$
example) 역슬래시를 문자열 중에서 선택하는 정규표현식 작성하면? \
(역슬래시를 escape시켜준다!)

포인트 .은 모든 character를 매치한다.
(어떠한 문자든, 특수문자든, 공백이든 전체 가리키는 와일드카드 역할)
...... 어떠한 문자든 상관없이 6개지목 (뒤에 남는 것들 5개여서 선택되어지지않음)
^.

. 그냥 .
. 모든 문자
. 그냥 .
따라서 .(한글자의 모든문자). 선택이므로
.K.선택되어진다.

지정해야되는 문자가 많다면 range(-) 기호 사용

Case 1, 2는 같은 결과이다.

[C-Ka-d2-6]
: CDEFGHIJK abcd 23456를 의미.

[^W-Z]대괄호 안 ^은 부정의 의미 (^ : 시작점)

.. 은 문자 2개 의미

파이프 기호는 한 덩어리로 '또는' 의미

어떠한 패턴이 얼마나 등장하느냐 Quantifiers:수량자

앞 문자에 대한 규칙 지정 '*' / '+' / '?'

1. '*' : 여러 개 있을 수도 있고 없을 수도 있다.

2. '+' : 1개 ~ 여러 개 (0개는 해당 안됨)

3. '?' : 0개 ~ 1개 (없거나 1개인 경우)

Several examples of "*" quantifier


[-@]* : '-' 혹은 '@' 갖고 있는 문자열


중괄호 : 수량자 구체적 숫자 지정

.{5}

[e,l,s]{1,3} : 1개 이상 3개 이하

[a-z]{3,} : 3 이상 제한없음



수량자 + ? 의미는 달라진다.

r.*? => r (모든 문자 0~ 여러개)? => r (모든 문자 0개)

r.+? r (모든 문자 1개 ~여러개)? => r 문자1개

r.?? r (모든 문자 0~1개)? -> r (모든 문자 0개) -> r

1.Greedy(탐욕적) 수량자

앞에 "div" 맨 뒤 "div"선택되어져서 전체 선택

2.lazy(게으른) 선택자

앞에 div, 분절해서 선택한다.

경계

\w : word = alphabet+number + '' =[A-z0-9]
공백은 word에 포함안된다.

대문자 W는 반대를 의미한다.
\W : not word = [^A-z0-9_]

1) \w : word



2) \W : not Word

1) \d : number =[0-9]

2) \D : not number

\b. : word boundary

1) \b\w : 문자 앞에 워드바운더리이기 때문에, 각 시작지점

워드바운더리 뒤로 빼면, 각 뒤에 문자 선택

\b\w+\b : 한글자 이상 가진 word 선택

1) \bcat : cat단어 가진 첫 번째 문자 선택

2) cat\b : cat단어 가진 뒤 문자 선택

1) 소문자 앞

2) 소문자 앞이 아닌 모든 글자

1) 앞에 있는 세글자

2) 뒤에 있는 세글자

차이점

1) ^Ere 멀티라인에서 여러 개 Ere 선택되어진다.

2) \AEre : 멀티라인임에도 불구하고 첫 번째 행에 Ere 선택되어짐

1) test$ 여러 개 선택되어진다

2) test\Z : 멀티라인임에도 불구하고 마지막 행 test만 선택 되어짐

(?=pattern) 패턴으로 찾지만 pattern 문자는 포함시키지 않는다.

최종정리

문자열 중 시작 '^' 또는 '\A'
문자열 중 끝 '$' 또는 '\Z'
문자 /w 문자아님 /W
숫자 /d 숫자아님 /D
바운더리 /b 그외 바운더리 선택 /B

  • 앞 문자에 대한 규칙 지정 '*' / '+' / '?'
  1. '*' : 여러 개 있을 수도 있고 없을 수도 있다.
  2. '+' : 1개 ~ 여러 개 (0개는 해당 안됨)
  3. '?' : 0개 ~ 1개 (없거나 1개인 경우)
    중괄호 숫자: 개수 제한 의미.{5}
profile
초록색 귤이 노랑색으로 익어가듯, 실력이 익어가기 위해 노력하는 개발자 lahee입니다.

0개의 댓글