[python]11. 파이썬 정규 표현식(Regular Expression) - 01. 정규표현식 규칙(0828)

0

정규 표현식(Regular Expression) 개요

정규 표현식이란

  • 텍스트에서 특정한 형태나 규칙을 가지는 문자열을 찾기 위해 그 형태나 규칙을 정의하는 것.
  • 파이썬 뿐만 아니라 문자열을 다루는 모든 곳에서 사용된다.
  • 정규식, Regexp이라고도 한다.

기본개념

  • 패턴
    • 정규 표현식이라고 한다.
    • 문장내에서 찾기위한 문구의 형태에 대한 표현식.
  • 메타문자
    • 패턴을 기술하기 위해 사용되는 특별한 의미를 가지는 문자
    • 예) a* : a가 0회 이상 반복을 뜻한다. a, aa, aaaa
  • 리터럴
    • 표현식이 값 자체를 의미하는 것

    • 예) aa 자체를 의미한다.

      정규 표현식 메타 문자

  • 패턴을 기술하기 위한 문자

문자 클래스 : [ ]

  • [ ] 사이의 문자들과 매칭
    • [abc] : a, b, c 중 하나의 문자와 매치
  • -를 이용해 범위로 설정할 수 있다.
    • [a-z] : 알파벳소문자중 하나의 문자와 매치
    • [a-zA-Z0-9] : 알파벳대소문자와 숫자 중 하나의 문자와 매치
    • [가-힣ㄱ-ㅎㅏ-ㅣ] : 한글 중 하나의 글자/문자와 매치
  • [^ 패턴] : ^ 으로 시작하는 경우 반대의 의미
    • [^abc] : a, b, c를 제외한 나머지 문자들 중 하나와 매치.

    • [^a-z] : 알파벳 소문자를 제외한 나머지 문자들 중 하나와 매치

      미리 정의된 문자 클래스

  • 자주 사용되는 문자클래스를 미리 정의된 별도 표기법으로 제공한다.
  • \d : 숫자와 매치. [0-9]와 동일
  • \D : \d의 반대. 숫자가 아닌 문자와 매치. [^0-9]와 동일
  • \w : 문자와 숫자, (underscore)와 매치. `[a-zA-Z가-힣0-9]`와 동일 (문자는 특수문자 제외한 일반문자-언어상관없는-들을 말한다.
  • \W : \w의 반대. 문자와 숫자와 가 아닌 문자와 매치. `[^a-zA-Z가-힣0-9]`와 동일
  • \s : 공백문자와 매치. tab,줄바꿈,공백문자와 일치
  • \S : \s와 반대. 공백을 제외한 문자열과 매치.
  • \b : 단어 경계(word boundary) 표시. 보통 단어 경계로 빈문자열
    • 단어경계: 단어(글자- \w)와 단어가 아닌 문자사이를 가리킨다.
    • \b가족\b => 우리 가족 만세(O), 우리가족만세 (X)
  • \B : \b의 반대. 단어 경계로 구분된 단어가 아닌 경우
    • \B가족\B => 우리 가족 만세(X), 우리가족만세 (O)

      글자수와 관련된 메타문자

  • * : 앞의 문자(패턴)과 일치하는 문자가 0개 이상인 경우. (a*b)
  • + : 앞의 문자(패턴)과 일치하는 문자가 1개이상인 경우. (a+b)
  • ? : 앞의 문자(패턴)과 일치하는 문자가 한개 있거나 없는 경우. (a?b)
  • {m} : 앞의 문자(패턴)가 m개. (a{3}b)
  • {m,} : 앞의 문자(패턴)이 m개 이상. (a{3,}b)
    • , 뒤에 공백이 들어오지 않도록 한다.
  • {m,n} : 앞의 문자(패턴)이 m개이상 n개 이하. (a{2,5}b)
  • ., *, +, ? 를 리터럴로 표현할 경우 \를 붙인다.

문장의 시작과 끝 표현

  • ^ 문자열의 시작 (^abc)
    • 문자 클래스([ ])의 ^와는 의미가 다르다.
  • $ : 문자열의 끝 (abc$)

기타

  • . : 한개의 모든 문자(\n-줄바꿈 제외) (a.b)
  • | : 둘중 하나(OR) (?:010|011|016|019)
    • 010|016-111 : 010 또는 016-111 이 된다.
  • ( ) : 패턴내 하위그룹을 만들때 사용
profile
데이터 분석 & 서비스 기획

0개의 댓글

관련 채용 정보