[파이썬] 정규식

0

정규식 : 정해진 형식이 있는 것을 의미

ex) 주민등록번호 = 111111-1111111
이메일 = helloworld@gmail.com

파이썬에서 정규식 활용하기

1. import re

-> re(정규식)을 import 함

2. p = re.compile("원하는 정규식")

-> 원하는 정규식 형태를 compile하여 p라는 변수에 저장
-> 기본적으로 p를 많이 사용함.(pattern의 약자)
-> . (be.r): 하나의 문자를 의미
-> ^ (^be): 문자열의 시작
-> $ (ar$): 문자열의 끝
-> ? (be?r): 중간은 있어도 없어도 됨 -> b는 있어도 없어도 됨.
-> {1, 2} (be{2, 5}r): {}안의 숫자만큼 반복됨 -> be{2, 5}r의 경우 e가 2, 5 반복되는 beer, beeer, beeeer, beeeeer만 match 되는 것.

3. m = p.match("비교할 문자열") : 주어진 문자열의 처음부터 확인

-> 원하는 정규식이 "be.r"인 경우 비교할 문자열을 "bear"로 할 경우, 정규식과 맞는지 확인할 수 있음.
-> 하지만 비교할 문자열이 "good bear"인 경우에는 처음부터 확인해서 정규식이 포함되었는지 알 수 없음.

4. m = p.search("비교할 문자열") : 주어진 문자열 중에 일치하는 것이 있는지 확인

-> 비교할 문자열을 "good bear"이라고 해도 일치하는 부분이 있기 때문에 찾을 수 있음.

5. lst = p.findall("비교할 문자열") : 일치하는 모든 것을 리스트 형태로 반환

-> 이 경우에는 "polarbear", "bearer", "bear" 모두 리스트 ["bear"]를 반환함.

6. obj = p.finditer("비교할 문자열") : 일치하는 문자열을 반복가능한 객체로 반환

실습


import re
p = re.compile("be.r") 
def print_match(m):
    if m:
        print("m.group(): ", m.group()) # 일치하는 문자열 출력
        print("m.string: ", m.string) # 입력받은 문자열 출력
        print("m.start() ", m.start()) # 일치하는 문자열의 시작 index
        print("m.end(): ", m.end()) # 일치하는 문자열의 끝 index
        print("m.span(): ", m.span()) # 일치하는 문자열의 시작과 끝 index
    else:
        print("매칭되지 않았습니다.")
m = p.match("bear")
print_match(m)
ma = p.search("good bear") 
print_match(ma)
lst = p.findall("polarbear bearer")
print(lst)

0개의 댓글