본문 바로가기

DS/fast campus daily report

7.9 (데이터엔지니어링) 정규표현식과 re모듈의 사용

정규표현식과 re모듈의 사용 (21:34)

정규표현식

raw string

  • 문자열 앞에 r이 붙으면 해당 문자열이 구성된 그대로 문자열로 변환
a = 'abcdef\n' # escape 문자
print(a)

b = '^abcdef'
print(b)

'''
abcdef

^abcdef
'''

'''
search method
첫번째 패턴을 찾으면 match 객체 반환
패턴을 찾지 못하면 None
'''


import re
m = re.search(r'abc', '123abcdef')

print(type(m))
print(m.start())
print(m.end()) # 
print(m.group())

m = re.search(r'\d\d\d\w', '112abcdef119')
print(m.group()) # 가장 먼저 찾아지는 패턴을 return 함

# . : 어떤 문자든 ok
m = re.search(r'..\d\d\d', '112abcdef119')
print (m.group())

'''<class 're.Match'>
3
6
abc
112a
ef119
'''

문자들의 범위 표현

  • [] : 내부의 메타 캐릭터는 캐릭터 자체
  • [a-z] : - 은 범위
  • [a-zA-Z0-9] : 모든 영문자, 숫자
  • [^0-9] : 숫자가 아닌 것
re.search(r'[cbm]at', 'cat') # cbm 중에 하나, 그리고 at
'''
<re.Match object; span=(0, 3), match='cat'>
'''

re.search(r'[abc.^]aron', 'caron') # [] 안의 문자는 문자 그대로를 의미
'''
<re.Match object; span=(0, 5), match='caron'>
'''

re.search(r'[^abe]aron', 'daron') # ^가 맨 앞에 쓰일 경우 부정을 의미함 (즉, a가 아니거나, b가 아니거나, e가 아닌 것)
'''
<re.Match object; span=(0, 5), match='daron'>
'''