정규 표현식 사용법 in 파이썬

import re
p= re.compile('[A-B]?c')

# 문자열 처음부터 정규식과 매치되는지 확인
# match된다면 match되는 정보를 match되지 않는다면 None을 return
result = p.match("확인하기 원하는 문자열")
result.group() # : 매치된 문자열 확인
result.start() # : 매치된 문자열 시작 위치 확인
result.end() # : 매치된 문자열 끝 위치 확인
result.span() # : tuple(시작 위치, 끝 위치)

# 문자열 처음부터가 아닌 문자열 전체중 매치되는 문자열이 존재하는지 확인
# match된다면 match되는 정보를 match되지 않는다면 None을 return
result = p.search("확인하기 원하는 문자열")

# 문자열 전체에서 매치되는 문자열을 모두 찾아 반환한다.
# match되는 문자열이 하나이상 존재시 해당 문자열들을 list 형태로 return
result = p.findall("확인하기 원하는 문자열")

# 문자열 전체에서 매치되는 문자열을 모두 찾아 반환한다.
# match되는 문자열이 하나이상 존재시 findall과는 다르게 반복가능한 객체(iterator object)를 돌려준다. 
result = p.finditer("확인하기 원하는 문자열")

정규 표현식 정리

  1. 문자 클래스 [ ] : 비교대상인 하나의 문자가 [ ] 사이의 문자들중 하나와 매치

    예 1. [abc] : a,b,c 중 한개의 문자와 매치

    예 2. [a-zA-Z] : 모든 알파벳

    예 3. [0-9] : 숫자로 표현된 문자와 매치

  2. Dot . : \\n 을 제외한 모든 문자가 가능

    [.] 로 문자 클래스 안에 있는 Dot은 그냥 . 만 매칭됨

  3. 반복 * and + and {} : * 는 0번 이상 반복 가능 and + 는 1번 이상 반복 가능 and {}는 횟수를 정해 반복

    예 1) ap*l → al 가능 , ap+l → al 불가능

    예 2) ap{3}l → apppl 만 가능 , ap{2,5}l → appl 부터 apppppl 까지만 가능

  4. ? : 있어도 되고 없어도 됨

    예 ) ap?l → al , apl 둘다 가능

  5. ^ : 표현식 맨 앞에 위치하고 문자열의 맨 처음이어야 한다는 의미

  6. $ : 표현식 맨 뒤에 위치하고 문자열의 맨 마지막이어야 한다는 의미

++ \\(백슬래시) 를 표현식에 사용하고 싶다면 \\\\ 다음과 같이 이스케이프 처리해서 사용하니 주의

r‘~~’ 과 같이 \\\\\\\\ 처럼 백슬래시가 너무 많이 쓰일때 사용하는 Raw String 규칙도 존재하니 백슬래시가 너무 과하게 쓰이면 참고하자

set()

  1. list(set(list[])) : list 중복된 값을 없앨때 사용하자!
  2. set() 연산 &(교집합), |(합집합), -(차집합) 을 적절히 사용하자!