TIL 5 | 정규표현식

saneeeeeeee_Ya·2021년 3월 14일
0

🛸

목록 보기
5/25
post-thumbnail

정규 표현식(Regular Expressions)


복잡한 문자열을 판단할 때 사용한다

파이썬에서는 내장 라이브러리인 re 모듈을 제공하여 정규표현식을 확인해 볼 수 있다

import re
re.match()

1. 정규식 문법

  • 메타문자
    | : 특정 문자열에서 지정된 문자열(문자)이 하나라도 포함 = or
    [] : 문자열 집합, []에 해당되는 문자와 매치한다
    () : 여러 패턴을 하나로 묶을 수 있다
    - : []내에 -을 넣어 두 문자 간의 범위를 만들 수 있다([From - to])
    . : 줄바꿈(\n)을 제외한 모든 문자
    * : *에서 앞에 있는 문자가 0번 이상 반복
    + : +에서 앞에 있는 문자가 1번 이상 반복
    {m} : {m}에서 앞에 있는 문자가 m번 반복
    {m, n} : {m, n}에서 앞에 있는 문자가 m~n번 반복
    ? : ?에 있는 문자가 0개이거나 1개 = {0, 1}
    ^ : 문자열이나 행의 처음
    $ : 문자열이나 행의 마지막

2. 문자열 검색

Method목적
Match('패턴', '문자열')시작부문에서 문자열에서 일치하는 정규식이 있는지 검색
일치하지 않으면 None을 반환
Search('패턴', '문자열')문자열 전체에서 일치하는 정규식이 있는지 검색
Findall('패턴', '문자열')문자열에서 겹치지 않는 패턴의 모든 일치를 문자열 리스트로 반환한다
Finditer('패턴', '문자열')문자열에서 겹치지 않는 패턴을 이터레이터로 반환한다

객체 = re.compile('정규표현식')를 지정하여 반복적인 정규표현식을 작성하는 것을 줄일 수 있다


3. 문자 클래스

문자클래스ASCII
\d[0-9] 모든 숫자
\D[^0-9] 숫자를 제외한 모든 숫자
\w[a-zA-z0-9_]영문 대소문자, 숫자, 밑줄
\W[^a-zA-Z0-9_]영문 대소문자, 숫자, 밑줄를 제외한 모든 문자

👇공백처리

문자클래스ASCII
\s[\t\n\r\f\v]
공백, \t(tap), \n(새 줄,Line Feed), \r(Carriage Return), \f(Form feed)
\S[^\t\n\r\f\v]
공백을 제외하고 \t(tap), \n(새 줄,Line Feed), \r(Carriage Return), \f(Form feed)

4. Match 객체의 method

method설명
group()그룹에 매치된 문자열을 반환한다
groups()그룹에 매치된 문자열을 Tuple로 반환한다
start()매치된 문자열의 시작 위치를 반환한다
end()매치된 문자열의 끝 위치를 반환한다
span()매치된 문자열의 (시작, 끝)에 해당되는 Tuple를 반환한다

✨Grouping

()을 사용하여 Grouping을 할 수 있다

👇예시

index를 통하여 해당 그룹을 가져올 수 있다
0이나 아무것도 지정하지 않으면 매치된 문자열을 반환한다

(?P<group<그룹이름>패턴)을 이용하여 그룹에 이름을 정해 편리하게 가져올 수 있다
정규식 안에서 (?P=그룹이름)으로 재참조가 가능하다

5. Compile Option

import re
p = re.compile('패턴', 'Compile Option')
  • DOTALL, S : 줄바꿈(\n)을 포함하는 옵션
  • IGNORECASE, I : 대소문자를 포함하는 옵션
  • MULTILINE, M : 각 줄마다 해당 패턴을 포함하는 옵션(^, $과 관련)
  • VERBOSE, X : 정규식 안에 주석을 포함하게 해주는 옵션
profile
🐜https://action2thefuture.github.io/🐜

0개의 댓글