[제코베ICT특강 후기]정규표현식 Python으로 톺아보기

[제코베ICT특강 후기]정규표현식 Python으로 톺아보기

특강 소개 및 후기

톺아보기란 샅샅이 더듬어 뒤지면서 찾아본다는 순 우리말이다.
파이썬을 잘 알지는 못하지만 정규표현식을 배우고싶은 마음에 듣게 된 특강이다. 파이썬을 잘 몰라도 충분히 들을 수 있는 강의였다!

사실 정규식에 대한 자료는 인터넷에 참 많다.
하지만 개발자로서 공부할 게 많다보니 정규식은 사용에 의해… 꼭 필요한 때만 급하게 공부하게 되어버린다.
언젠가 공부해야지라고 생각만했었는데 이호준대표님의 특강덕분에 정규식에 한 발 가까워졌다.
물론 자유자재로 사용하려면 한참 멀었지만 기초를 다질 수 있어 참 유익했다.




정규표현식

  • 실습사이트: https://regexr.com/5nvc2
    이호준대표님이 미리 넣어주신 데이터를 가지고 정규표현식을 연습할 수 있는 실습사이트이다.
    왼쪽 메뉴바의 Cheatsheet을 통해서 각 정의 및 기능을 확인할 수 있다.
    교안의 실전부분을 실습사이트에서 직접 진행해보면서 정규표현식 기초를 익힐 수 있다.




강의 중의 기억하고싶은 팁들이다.

  • /^문자/gm : 문자로 시작하는것
  • /문자$/gm : 문자로 끝나는것
  • /^문자$/gm 주로 위의 둘을 함께 사용한다.
  • /... .../gm : 3글자와 띄어쓰고 그다음 3글자를 찾을 수 있다.
  • /h[ea]llo/gm : 택일 기능으로 hello와 hallo 두 개 다 찾는다.
  • [a-z].a: 총 3글자이고 첫번째글자는 a-z, 두번째는 모든 글자, 마지막글자는 a인 문자열을 찾는다
  • ?는 위치에 따라 의미가 다르다.




서브패턴

제일 재미있던 부분은 서브패턴이었다.

grouping 규칙 사용법 예시
(?:abc) 캐치는 되지만 그룹을 사용하지 않음
(?=abc) (Positive 매칭) 그룹으로 설정(Lookahead) hello(?=world)/gm 뒤에 world가 오는 hello를 찾음
(?!abc) (Negative 매칭) 그룹으로 설정(Lookbehind) hello(?!world)/gm 뒤에 world가 오지않는 hello를 찾음




Google Colab

주실습은 코랩을 사용했다.
코랩은 예전에 한국코드페어 특강때 잠깐 다뤄본 적이 있다.
만약 파이썬을 아예 모른다면 자바스크립트를 이용하는 실습 방법도 노션 교안에 다 나와있다! 교안이 잘되어있었기에 따로 필기를 할 필요가 없었다. 세상친절!




강의 중의 기억하고싶은 팁들이다.

  • 가장 많이 사용하는 메서드는 re.compile('패턴').findall(문자열) 이다. 정규식에 매칭되는 리스트를 반환한다.
  • 교안의 연습문제 중 주사위문제가 2018년 카카오 코딩테스트와 비슷한 수준의 문제이다.
  • 교안의 연습문제에 대한 답은 주피터노트북에 나와있다.




압축 문제

재미있던 문제는 압축문제였다.
for와 if를 이용하여 풀 수 있지만 정규표현식으로 더욱더 간단하게 풀 수 있었다.
그리고 또 한 번 느끼는 건데 코테할때는 파이썬이 짱이다. 이렇게 간단할수가!

  • 문제: aaabbccc는 a3b2c3로 압축된다. 압축된 문자열을 정규표현식을 사용하여 다시 풀어보시오
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//풀이1

정규표현식 = re.compile('([a-z])([1-9])')
문자열 = 'a3b2c3'

결과 = 정규표현식.findall(문자열)
결과

s = ''
for i, j in 결과 :
s += i *int(j)
print(s)

//출력
aaabbccc

위를 더 간단하게 한 줄로 풀수도 있다.

1
2
3
4
5
//풀이2 : 한줄버전 한줄버전
''.join([i * int(j) for i, j in 결과])

//출력
aaabbccc




추가 자료

정규표현식, 자주 사용하는 정규식