본문 바로가기
개발일지/Python

*매우중요 Python - 정규표현식(regex) 예시와 함께 1

by 개발에정착하고싶다 2022. 9. 23.
320x100
# 기본 정규표현식 예제

import re

# regular expression
# regex

s = 'hi'
# 여기서 써주는 r 이 '이제 정규식을 들어간다. 라는 의미다.
print(re.match(r'hi',s))

# <re.Match object; span=(0, 2), match='hi'>
# 결과값으로 이렇게 나온다. span () 안에 있는 숫자는 어디서 부터 어디까지 일치한다. 라는 의미
# 그 다음에 나온 match = 에 나오는 것은 '무엇이 일치되었다'를 리턴해주는 것

# 만약 print(re.match(r'hey',s))로 바꾸게 되면 none 이라는 값이 리턴된다.
# 즉, re.match는 일부분의 일치를 탐색하는 것이 아니라, 최소한에 r 다음에 나오는 것이 , 다음에 나오는 값에
# 모두 들어 있어야 하는 것 같다.


# 정규표현식 설명 - *

import re

s = 'hi'

# print(re.match(r'hi1*',s))
# <re.Match object; span=(0, 2), match='hi'>

print(re.match(r'hi11*',s))
# None

# *앞의 값이 0개이상 일치해야한다고하는데, 명확하게는 이해를 못한것 같다.
# +도 마찬가지의 원리이다. 다만 +는 1개이상 이라는 점.


# 정규표현식 - ?

import re

s = 'color'
print(re.match(r'colou?r',s))

# <re.Match object; span=(0, 5), match='color'>
# 이렇듯 없을 수도 있는것을 매칭해준다.

# 하지만 ?까지 매칭해주려면 어떻게 해야할까?

s = 'how are you?'
print(re.match(r'how are you\?',s))

# <re.Match object; span=(0, 12), match='how are you?'>
# 매치가 된다.


# 정규표현식 - []

import re

# A B C D

s = '이 영화는 C등급 입니다.'
print(re.match(r'이 영화는 [ABCD]등급 입니다.',s))

# <re.Match object; span=(0, 14), match='이 영화는 C등급 입니다.'>
# 즉, []는  SQL 로 봤을때 IN의 기능을 한다고 보면 된다.

# 패턴매칭의 응용 예시

print(s.split('이 영화는 ')[1].split('등급')[0])
# C
# 텍스트 출력

print(re.findall(r'이 영화는 (.)등급 입니다.',s))
# ['C']
# 리스트 출력

print(re.findall(r'이 (..)는 (.)등급 입니다.',s))
# [('영화', 'C')]

 

정규표현식은 프로그램언어에서 가장 중요한 부분 중 하나라고 생각한다.

확실히 이해하기가 약간 생소하여서 난해하지만, 중간중간에 '이걸 어떻게 풀어가지?' 라고 고민이 드는 부분들 중 대부분이

정규표현식으로 대체하면 해결이 가능했었다.

공부가 아직 미숙하나, 더 탄탄하게 기초를 다지자.

300x250