비가 끝없이 쏟아져서, 컴퓨터 언어 이해하기 좋은 때
2022년 10월 4일 12시 28분-1시 41분 사이.
*비전공자의 EliceAcademy <Do it! 파이썬 생활 프로그래밍> 공부 기록입니다.
개천절이라더니, 정말로 하늘이 열려서 비가 쏟아지고 또 쏟아졌다.
알고리즘이 물어다 준 오늘의 플레이리스트... 첫 곡부터의 짙은 음색에 빠져들게 된다.
DAY 12
[실습8] findall 메서드 - 패턴을 모두 찾아 리스트로 반환하기
tmi: 파인드올인데 무의식적으로 '핀달'이라고 읽게 된다.
찾고자 하는 패턴을 찾아서, 알아서 리스트 형태로 나열해 값을 반환하게끔 도와준다. 찾는 값이 없으면 결과값이 빈 리스트로 나와서, 찾았는지 확인해야 하는 match와 search와는 살짝 다른 면이 있다. 다음과 같은 형태로 사용할 수 있다.
re.findall(패턴, 찾고자 하는 문자열)
[실습9] 정규표현식의 탐욕 제어하기: 마침표(.)와 물음표(?)
우리말에서 마침표는 문장을 끝내는 역할을 한다. 물음표는 호기심, 궁금함을 표현할 때 사용한다. 정규표현식의 세계에서라면 얘기가 달라진다.
이곳에서 마침표(.)는 '모든 문자 전부'를 가리킨다. 그래서 때로 마침표의 사용은, 어떠한 패턴을 찾으라는 명령을 '중의적으로' 내리게 만들어버리기도 한다. 이렇게도 저렇게도 해석해 패턴을 출력할 수 있는 명령어라면, 최대한 많은 문자를 집어삼킨 패턴 형태를 결과값으로 내놓아 버리는 것이다. 이를 지칭하는 개념어는 '탐욕스럽다greedy'다.
그리디 개념을 해소하기 위해 사용하는 것이 물음표(?)다. 원하는 패턴 출력을 위해 '끊어서 해석할' 부분 앞에 물음표를 넣어주는 것이다. 공부자료에서는 이를 '탐욕을 멈춘다'라고 표현하고 있다. 우리말에서 중의적으로 해석될 수 있는 문장에, 쉼표를 넣어서 의미를 명확히 하는 것과 비슷한 기능인 모양이다.
잠깐 상상에 잠겨본다. 우리가 이해할 수 없거나 의문이 생기는 지점에서 머릿속에 물음표가 떠오르면 잠시 멈춤하고 답을 구하려 버퍼링에 걸리듯, 컴퓨터도 물음표를 마주한 순간 진행하던 작업을 멈추고 다시 처음부터 작업을 시작하는 것이 아닐까?
그렇다면, 살아가다 어느 날 머리 위에 큰 물음표가 떠오르는 날의 최선은, 생각을 리셋하고 다시 동일한 작업을 시작해 보는 일일 수도 있겠다.
다시 문제로 돌아가 보면...
그런데 2번 문제를 푸는 과정에서 궁금한 부분들이 생겼다. 사실 1번 문제 풀면서 이해한 부분만 가지고는 어떠한 코드를 적어야 할지 잘 상상되지가 않았다. 그래서 2번 답은 구글링을 통해서 알 수 있었다. 참고한 사이트의 주소는 아래에 첨부한다.
원리 쪽에서 이해되지 않는 부분은 적어서 헬프센터에 질문으로 남겼다. 답변 시간은 평일 낮이므로, 낮 중에 답변을 받으면 질문과 답 내용 모두를 적어둘 것이다.
자꾸 시간이 늦어진(늘어진)다. 시간 좀 딱딱 지켜보도록 신경써야 겠다.