본문 바로가기
1. SW 개발 & IT 트렌드

Python - 정규표현식(regular expression)

by soosun 2020. 7. 8.
  • . (마침표) - 어떤 한개의 character와 일치 (newline(엔터) 제외)

  • \w - 문자 character와 일치 [a-zA-Z0-9_]

  • \s - 공백문자와 일치

  • \t, \n, \r - tab, newline, return

  • \d - 숫자 character와 일치 [0-9]

  • ^ = 시작, $ = 끝 각각 문자열의 시작과 끝을 의미

  • \가 붙으면 스페셜한 의미가 없어짐. 예를들어 \.는 .자체를 의미 \\는 \를 의미

  • 자세한 내용은 링크 참조 https://docs.python.org/3/library/re.html

 

metacharacters (메타 캐릭터)

[] 문자들의 범위를 나타내기 위해 사용

  • [] 내부의 메타 캐릭터는 캐릭터 자체를 나타냄
  • e.g)
  • [abck] : a or b or c or k
  • [abc.^] : a or b or c or . or ^
  • [a-d] : -와 함께 사용되면 해당 문자 사이의 범위에 속하는 문자 중 하나
  • [0-9] : 모든 숫자
  • [a-z] : 모든 소문자
  • [A-Z] : 모든 대문자
  • [a-zA-Z0-9] : 모든 알파벳 문자 및 숫자
  • [^0-9] : ^가 맨 앞에 사용 되는 경우 해당 문자 패턴이 아닌 것과 매칭
  1. 다른 문자와 함께 사용되어 특수한 의미를 지님
    • \d : 숫자를 [0-9]와 동일
    • \D : 숫자가 아닌 문자 [^0-9]와 동일
    • \s : 공백 문자(띄어쓰기, 탭, 엔터 등)
    • \S : 공백이 아닌 문자
    • \w : 알파벳대소문자, 숫자 [0-9a-zA-Z]와 동일
    • \W : non alpha-numeric 문자 [^0-9a-zA-Z]와 동일
  2. 메타 캐릭터가 캐릭터 자체를 표현하도록 할 경우 사용
    • \. , \\

반복패턴

  • 패턴 뒤에 위치하는 *, +, ?는 해당 패턴이 반복적으로 존재하는지 검사
    • '+' -> 1번 이상의 패턴이 발생
    • '*' -> 0번 이상의 패턴이 발생
    • '?' -> 0 혹은 1번의 패턴이 발생
  • 반복을 패턴의 경우 greedy하게 검색 함, 즉 가능한 많은 부분이 매칭되도록 함
    • e.g) a[bcd]*b 패턴을 abcbdccb에서 검색하는 경우
      • ab, abcb, abcbdccb 전부 가능 하지만 최대한 많은 부분이 매칭된 abcbdccb가 검색된 패턴

^, $

  • ^ 문자열의 맨 앞부터 일치하는 경우 검색
  • $ 문자열의 맨 뒤부터 일치하는 경우 검색

grouping

  • ()을 사용하여 그루핑
  • 매칭 결과를 각 그룹별로 분리 가능
  • 패턴 명시 할 때, 각 그룹을 괄호() 안에 넣어 분리하여 사용

{}

  • *, +, ?을 사용하여 반복적인 패턴을 찾는 것이 가능하나, 반복의 횟수 제한은 불가
  • 패턴뒤에 위치하는 중괄호{}에 숫자를 명시하면 해당 숫자 만큼의 반복인 경우에만 매칭
  • {4} - 4번 반복
  • {3,4} - 3 ~ 4번 반복

미니멈 매칭(non-greedy way)

  • 기본적으로 *, +, ?를 사용하면 greedy(맥시멈 매칭)하게 동작함
  • *?, +?을 이용하여 해당 기능을 구현

{}?

  • {m,n}의 경우 m번 에서 n번 반복하나 greedy하게 동작
  • {m,n}?로 사용하면 non-greedy하게 동작. 즉, 최소 m번만 매칭하면 만족

'1. SW 개발 & IT 트렌드' 카테고리의 다른 글

numpy 기본 함수(numpy documentation)  (0) 2020.07.20
stream_framework_comparison_chart  (0) 2020.07.08
Anaconda - Keyboard shortcuts  (0) 2020.06.24
Anaconda Download  (0) 2020.06.24
How to Install Java on Raspberry Pi  (0) 2020.06.12

댓글