본문 바로가기
개발자의 개발개발한 하루/python

파이썬 정규표현식 re 사용

by ju니어 2022. 2. 9.
728x90
반응형

requests에 이어 정규표현식  re 라이브러리를 이용해 보았다.

강의는 다음과 같다.

 

https://www.youtube.com/watch?v=yQ20jZwDjTE&t=3154s 

 

 

정규표현식을 찾아봤는데, 다양한 정의 중 한 가지 공통된 점이 있었다.

복잡한 문자열을 처리할 때 사용하는 기법으로, 특정 패턴을 가진 문자열이 있는지 여부를 확인할 수 있다는 것이다.

 

예를 들면 다음과 같다.

. (ca.e) : 하나의 문자 의미 > care, cafe, case (0) | caffe(X)
^ (^de) : 문자열 시작 > desk, destination(0) | fade(X)
$ (se$) : 문자열을 끝 > case, base(O) | fase (X)
.. 등등 정규식은 많다!

 

간단하게 강의 바탕으로 이해를 높이기 위해 실습을 진행했다.

 

 

1. match  함수 사용 

match함수 = 주어진 문자열의 처음부터 일치하는지 확인

import re

# p는 패턴
p = re.compile("ca.e")

def print_match(m):
    if m:
        print(m.group())
    else:
        print("매칭되지 않음")
        
m = p.match("good care") # match : 주어진 문자열의 처음부터 일치하는지 확인
print_match(m)

 

결과를 보면 match 함수는 문자열 처음부터 일치하는지 확인하는 함수이므로, 매칭되지 않음으로 출력이 된다.

 

 

2. search 함수 사용

search 함수 = 주어진 문자열 중 일치하는 게 있는지 확인하는 함수로, 하나라도 문자열이 일치할 시 일치하다고 출력이 된다.

import re

# p는 패턴
p = re.compile("ca.e")

def print_match(m):
    if m:
        print(m.group())
    else:
        print("매칭되지 않음")
        
m = p.search("good care") # search : 주어진 문자열 중 일치하는게 있는지 확인
print_match(m)

 

 

3. group, string 함수 비교

group함수 = 일치하는 문자열만 반환해주는 함수

string함수 = 입력받은 문자열만 반환해주는 함수

import re

p = re.compile("ca.e")

def print_match(m):
    if m:
        print(m.group()) # 일치하는 문자열 반환
        print(m.string) # 입력받은 문자열 반환
    else:
        print("매칭되지 않음")
        
m = p.search("good care")
print_match(m)

 

 

 

4. start, end, span 함수 비교

start함수 = 일치하는 문자열의 시작 index

end함수 = 일치하는 문자열의 끝 index

span함수 = 일치하는 문자열의 시작과 끝 index

import re

p = re.compile("ca.e")

def print_match(m):
    if m:
        print(m.start()) # 일치하는 문자열의 시작 index
        print(m.end()) # 일치하는 문자열의 끝 index
        print(m.span()) # 일치하는 문자열의 시작과 끝 index
    else:
        print("매칭되지 않음")
        
m = p.search("good care") # search : 주어진 문자열 중 일치하는게 있는지 확인
print_match(m)

 

 

 

5. findall 함수 사용

findall = 일치하는 모든 패턴을 리스트 형식으로 출력

import re

p = re.compile("ca.e")

lst = p.findall("good care cafe")
print(lst)

반응형

댓글