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