본문 바로가기

book

인간 vs. AI 정규표현식 문제 풀이 대결

책의 제목부터 매우 흥미롭습니다. AI와 대결이라니요.

보통 ChatGPT, 코파일럿등 AI를 통해서 가장 개발적으로 처음 접근하는 화두가 정규표현식입니다.

컨셥에 딱 맞죠. 예전에도 어딘가에서 내가 원하는 문자열 형태를 샘플로 여러개 입력을 하면 그에 맞는 정규표현식을 제공하는 사이트가 있을 거라고 생각을 했는데, 생각보다 그런 서비스를 하는 사이트는 없었습니다.

자주 사용은 안하는데, 딱 필요할때가 있는 정규표현식을 이번 기회에 이책을 통해서 좀 더 잘 활용 할수 있을 것 같은 생각이 들었습니다.

 

정규표현식을 대부분의 언어에서 지원을 합니다. grep, sed, AWK, perl 뿐만 아니라, Java, .net. javascript, GO, Rust 등등

생각해보면, 이렇게 다양한 언어에 대해서 공통적으로 적용할 수 있는 기능적인 부분인 정규표현식은 잘 활용하면 더욱 더 강력한 기능을 가지게 됩니다.

 

해당 책의 정규표현식 실습은 python의 re 표준 라이브러리로 실습환경을 구성합니다.

책의 서브 타이틀로도 나와 있는 것처럼, 24개의 퍼즐과 같은 패턴을 가지고 ChatGPT, 코파일럿을 통한 활용법을 학습합니다.
책의 표지가 동양풍의 그림이여서, 저자분이 동양분이신줄 알았는데, 저자분은 "데이비드 머츠" 이십니다.

시작하며에 있는 글 (이 책의 목적 및 다루는 내용에 대해서 가장 잘 요약하고 있는 글입니다.)
AI기반 도구들의 만들어내는 결과는 매우 놀랍다. 하지만 동시에 수많은 실패를 보면서 매우 어리석다는 것도 이해해야 한다.
바로 이것이 이 책의 주요 목적이다. 정규표헌식을 사용한 퍼즐들은 컴퓨터 프로그래밍의 모든 영역 중에서도 인공지능의 특이한 행동을 이해하기에 특히 적합하다. 

 

 

■ 퍼즐에 대해서

·  퍼즐에 대해서 저자분이 생각하는 정규식 풀이와 AI를 활용한 풀이법을 비교하가면서, 대결이라는 컨셥을 진행합니다.

<저자생각> vs <AI생각> 이렇게 2개를 직관적으로 비교하는 방식으로 하나의 주제를 설명하게 됩니다.

 

 

■ 수량자와 특별한 하위 패턴들

·  x로 시작하고 y로 끝나는 모든 단어를 매치하라(퍼즐1)

가장처음 나오는 예시로, 보통 전화번호 및 입력 속성을 체크하기 위해서 가장 보편적으로 사용하는 패턴이다.

단어를 구분짖기 위한 방식등을 포함해서, 해당 요청을 처리할수가 있다.

·  책의 AI코드 추출은 아래와 같이 영어로 chatgpt를 이용해서 결과물을 도출합니다.

 프롬프트 명령어는 한글이 아니라 영어로 입력하게 책이 구성되어 있다. 첫 예시라서 영어가 간단하지만 뒤로 갈수록 입력하는

문장의 길이는 길어집니다. 실제 이정도의 영어를 입력해서 원하는 결과를 도출하게는 어려울것이라고 생각합니다.

그래서 책을 통해서 간접체험하는 것이 반대로 생각하면 더 유용할 것 같습니다.

그리고 실제 ChatGPT에서 제공하는 결과 답변은 책과 다르게 제공 될 수 있으니 참고 하시면 됩니다.

첫 퍼즐에서 저자분은 findall()을 통해서 matching을 하였는데, finditer()에 대한 부분도 적용하면 좋은 가이드를 함께 제공합니다.

 

평균적으로 책에서 코파일럿 보다는 ChatGPT에서 정규식에 대해서는 조금 더 의미있는 도움되는 코드가 제공되는것 같습니다.

 

 

■ 구성 포맷

·  정규표현식을 이용해서 구성 포맷을 파싱할수 있다.

정규표현식을 수행해서, python의 딕셔너리 구성으로 반홤받을수 있다.

dict(re.findall(~~~)) 을 이용하는 방법을 이용하면 된다.

 

·  아래와 같은 시그널을 분석하는 상태시쿼스에서 유효하게 인코딩된 신호들을 식별하는 예시등을 통해서 일반적인

text형태의 구성, 연습에서 탈피하는 예시등이 좋았습니다.

 

■ 흥미로운 주제들

·  chapter4장에서 일반적으로 python에서 제공하는 함수를 정규표현식으로 작성하는 시도을 해봅니다. 

흥미로운 주제인것 같습니다.

≫ str.count() : 긴 문자열 안에 하위 문자열을 검색하는 기능

포커플레이를 통해서 몇가지 시나리오를 정규표현식을 통한 기능 만들어보기

·  스트레이트, 플러시 카드 패 식별하기

· 포터 카드 패를 포 카드와 매치하기

· 포커 카드패를 풀 하우스와 매치하기

· 포커 카드 패에서 트리플, 원 페어를 매치하기

포커에 대해서 기본적으로 게임 방식을 아시면 조금 더 흥미로운 주제로 생각이 됩니다.

이러한 부분도 정규표현식으로 의도한 결과물을 추출해 볼수 있다는 것은 조금은 다른 관점으로 정규표현식을 접근하고

활용할수 있는 계기를 제공해 줍니다.

IPv4주소 테스트 하기

조금은 현실적인 정규표현식 예시도 다양하게 연습하고, 실제 어떤것이 정답은 없지만 원하는 결과를 체크할 수 있는

다양한 시도를 저자 관점 & AI부분을 통해서 자기가 이해하고, 사용하기 편한 코드를 도출해 나갈수 있습니다.

 

■ 정규식에 기본적인 시작

·  책의 내용을 처음부터 보기 보다는 뒤에 별도로 구성된 정규표현식의 소개 내용을 먼저 살펴보시고, 책의 내용을 학습한다면

더 나은 효과를 얻으실수 있습니다. 기본적인 내용부터 잘 설명되어져 있습니다.