[TIL] python - 정규표현식

정밍깅·2022년 8월 23일
0

점프 투 파이썬

목록 보기
6/6

정규표현식

: 모든 언어 공통, 문자열 처리할 때 사용

python에서 정규 표현식을 지원하는 모듈

import re
p=re.compile()

문자 클래스 []
: [] 사이의 문자들과 매치

하이픈을 사용하여 from-to 로 표현 가능
ex) [a-c] = [abc]

Dot(.)
: 줄바꿈(\n)을 제외한 모든 문자와 매치

ex) a.b의 경우, a0b aab 모두 매치 / abc 는 a b 사이에 문자가 없기 때문에 매치 되지 않음

반복

1) *: 0번 이상 반복 되는 경우 매치
ex) ca
t 의 경우, ct cat caaaaat 등 매치

2) +: 1번 이상 반복 되는 경우 매치

3) {m,n}
m번, n번 반복 되는 경우 매치

4) ? == {0,1}


match
: re.compile()의 조건에 맞는 경우 매치 / 아닌 경우 None

  • group() : 매치된 문자열을 리턴함
  • start() : 매치된 문자열의 시작 위치를 리턴함
  • end() : 매치된 문자열의 끝 위치를 리턴함
  • span() : 매치된 문자열의 (시작, 끝)에 해당하는 튜플을 리턴함

search
: re.compile()의 조건에 맞는 경우 매치 / 조건에 안 맞아도 맞는 부분을 리턴함

findall
:re.compile()의 조건에 일치하는 것을 리스트에 담아서 리턴함

finditer
re.compile()의 조건에 맞는 경우, itrerator object로 리턴함
for 문을 통해 담긴 것을 확인해보면 match 되는 문자열을 다 match 객체 형태로, 반복 가능한 객체 하나로 리턴함

컴파일 옵션 re.옵션

  • DOTALL, S : 줄바꿈 문자도 포함하는 옵션
  • IGNORECASE, I : 대소문자를 모두 구분없이 포함하는 옵션
  • MULTILINE, M : ^를 맨 처음만이 아닌 각 라인의 처음으로 인식 시키는 옵션
  • VERBOSE, X : 긴 정규표현식을 나눠서 표기(=공백이 있도록)해도 인식 시키는 옵션

백슬래시 \

  • \d : 숫자와 매치 == [0-9]
  • \D : 숫자가 아닌 것과 매치 == [^0-9]
  • \s : 공백을 뜻함 ==[\t\n\r\f\v]
  • \S : 공백이 아닌 것과 매치 == [^\t\n\r\f\v]
  • \w : 문자+숫자와 매치
  • \W : 문자+숫자가 아닌 것과 매치

위와 같은 문자 클래스로 인해 \section과 같은 경우 \s+ection으로 인식함
--> 이를 구분하기 위해 \s로 입력해야 함
--> 그러나 문자열에서 \ == \
--> \\section == r'\section 으로 간소화 하여 입력 가능

메타문자

  • : == or
  • ^ : 맨 처음
  • $ : 맨 끝
  • \b : 공백
  • \숫자 : 숫자 만큼 더 반복

그룹핑 ()

?P<name> : 그룹핑된 문자열에 이름 붙이기
  • 긍정형 전방 탐색 : 원하는 문자열이 검색에는 이용되지만 출력값에는 나오지 않음
(?=원하는 문자열) 
  • 부정형 전방 탐색 : 원하는 문자열을 제거한 값이 출력됨
(?!원하는 문자열$) 

여러개 사용하고 싶은 경우 :

(?!문자열$|문자열$)

0개의 댓글